diff options
author | Dave Airlie <airlied@redhat.com> | 2017-05-30 15:54:15 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2017-05-30 15:54:15 +1000 |
commit | 2a1720376adda5ecf8e636fbfb05339c7dad1c55 (patch) | |
tree | cdb76abac82306516aa556d9e9ddb15571f07517 /drivers/char/mem.c | |
parent | a82256bc026722800d1fdeca5521f1ba487bc2ef (diff) | |
parent | 5ed02dbb497422bf225783f46e6eadd237d23d6b (diff) | |
download | talos-op-linux-2a1720376adda5ecf8e636fbfb05339c7dad1c55.tar.gz talos-op-linux-2a1720376adda5ecf8e636fbfb05339c7dad1c55.zip |
Backmerge tag 'v4.12-rc3' into drm-next
Linux 4.12-rc3
Daniel has requested this for some drm-intel-next work.
Diffstat (limited to 'drivers/char/mem.c')
-rw-r--r-- | drivers/char/mem.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 7e4a9d1296bb..6e0cbe092220 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -340,6 +340,11 @@ static const struct vm_operations_struct mmap_mem_ops = { static int mmap_mem(struct file *file, struct vm_area_struct *vma) { size_t size = vma->vm_end - vma->vm_start; + phys_addr_t offset = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT; + + /* It's illegal to wrap around the end of the physical address space. */ + if (offset + (phys_addr_t)size < offset) + return -EINVAL; if (!valid_mmap_phys_addr_range(vma->vm_pgoff, size)) return -EINVAL; |