diff options
Diffstat (limited to 'mm/nommu.c')
-rw-r--r-- | mm/nommu.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/mm/nommu.c b/mm/nommu.c index a1792ed2cb1a..e6123a5b2cc1 100644 --- a/mm/nommu.c +++ b/mm/nommu.c | |||
@@ -1470,28 +1470,22 @@ error_getting_region: | |||
1470 | return -ENOMEM; | 1470 | return -ENOMEM; |
1471 | } | 1471 | } |
1472 | 1472 | ||
1473 | static unsigned long do_mmap(struct file *file, unsigned long addr, | 1473 | unsigned long vm_mmap(struct file *file, unsigned long addr, |
1474 | unsigned long len, unsigned long prot, | 1474 | unsigned long len, unsigned long prot, |
1475 | unsigned long flag, unsigned long offset) | 1475 | unsigned long flag, unsigned long offset) |
1476 | { | 1476 | { |
1477 | unsigned long ret; | ||
1478 | struct mm_struct *mm = current->mm; | ||
1479 | |||
1477 | if (unlikely(offset + PAGE_ALIGN(len) < offset)) | 1480 | if (unlikely(offset + PAGE_ALIGN(len) < offset)) |
1478 | return -EINVAL; | 1481 | return -EINVAL; |
1479 | if (unlikely(offset & ~PAGE_MASK)) | 1482 | if (unlikely(offset & ~PAGE_MASK)) |
1480 | return -EINVAL; | 1483 | return -EINVAL; |
1481 | return do_mmap_pgoff(file, addr, len, prot, flag, offset >> PAGE_SHIFT); | ||
1482 | } | ||
1483 | |||
1484 | unsigned long vm_mmap(struct file *file, unsigned long addr, | ||
1485 | unsigned long len, unsigned long prot, | ||
1486 | unsigned long flag, unsigned long offset) | ||
1487 | { | ||
1488 | unsigned long ret; | ||
1489 | struct mm_struct *mm = current->mm; | ||
1490 | 1484 | ||
1491 | ret = security_mmap_file(file, prot, flag); | 1485 | ret = security_mmap_file(file, prot, flag); |
1492 | if (!ret) { | 1486 | if (!ret) { |
1493 | down_write(&mm->mmap_sem); | 1487 | down_write(&mm->mmap_sem); |
1494 | ret = do_mmap(file, addr, len, prot, flag, offset); | 1488 | ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> PAGE_SHIFT); |
1495 | up_write(&mm->mmap_sem); | 1489 | up_write(&mm->mmap_sem); |
1496 | } | 1490 | } |
1497 | return ret; | 1491 | return ret; |