lkml.org 
[lkml]   [2018]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 24/43] drm: udl: Properly check framebuffer mmap offsets
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    commit 3b82a4db8eaccce735dffd50b4d4e1578099b8e8 upstream.

    The memmap options sent to the udl framebuffer driver were not being
    checked for all sets of possible crazy values. Fix this up by properly
    bounding the allowed values.

    Reported-by: Eyal Itkin <eyalit@checkpoint.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180321154553.GA18454@kroah.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/gpu/drm/udl/udl_fb.c | 9 +++++++--
    1 file changed, 7 insertions(+), 2 deletions(-)

    --- a/drivers/gpu/drm/udl/udl_fb.c
    +++ b/drivers/gpu/drm/udl/udl_fb.c
    @@ -256,10 +256,15 @@ static int udl_fb_mmap(struct fb_info *i
    {
    unsigned long start = vma->vm_start;
    unsigned long size = vma->vm_end - vma->vm_start;
    - unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
    + unsigned long offset;
    unsigned long page, pos;

    - if (offset + size > info->fix.smem_len)
    + if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
    + return -EINVAL;
    +
    + offset = vma->vm_pgoff << PAGE_SHIFT;
    +
    + if (offset > info->fix.smem_len || size > info->fix.smem_len - offset)
    return -EINVAL;

    pos = (unsigned long)info->fix.smem_start + offset;

    \
     
     \ /
      Last update: 2018-03-27 20:09    [W:2.528 / U:0.292 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site