diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-05-30 20:17:35 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-06-01 10:37:18 -0400 |
commit | eb36c5873b96e8c7376768d3906da74aae6e3839 (patch) | |
tree | 01c5290ed4c55fea85e0dc3f8d70eeaab44678cf /mm/nommu.c | |
parent | dc982501d9643ab0c117e7d87562857ce234652d (diff) |
new helper: vm_mmap_pgoff()
take it to mm/util.c, convert vm_mmap() to use of that one and
take it to mm/util.c as well, convert both sys_mmap_pgoff() to
use of vm_mmap_pgoff()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'mm/nommu.c')
-rw-r--r-- | mm/nommu.c | 29 |
1 files changed, 1 insertions, 28 deletions
diff --git a/mm/nommu.c b/mm/nommu.c index e6123a5b2cc1..c4acfbc09972 100644 --- a/mm/nommu.c +++ b/mm/nommu.c | |||
@@ -1470,28 +1470,6 @@ error_getting_region: | |||
1470 | return -ENOMEM; | 1470 | return -ENOMEM; |
1471 | } | 1471 | } |
1472 | 1472 | ||
1473 | unsigned long vm_mmap(struct file *file, unsigned long addr, | ||
1474 | unsigned long len, unsigned long prot, | ||
1475 | unsigned long flag, unsigned long offset) | ||
1476 | { | ||
1477 | unsigned long ret; | ||
1478 | struct mm_struct *mm = current->mm; | ||
1479 | |||
1480 | if (unlikely(offset + PAGE_ALIGN(len) < offset)) | ||
1481 | return -EINVAL; | ||
1482 | if (unlikely(offset & ~PAGE_MASK)) | ||
1483 | return -EINVAL; | ||
1484 | |||
1485 | ret = security_mmap_file(file, prot, flag); | ||
1486 | if (!ret) { | ||
1487 | down_write(&mm->mmap_sem); | ||
1488 | ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> PAGE_SHIFT); | ||
1489 | up_write(&mm->mmap_sem); | ||
1490 | } | ||
1491 | return ret; | ||
1492 | } | ||
1493 | EXPORT_SYMBOL(vm_mmap); | ||
1494 | |||
1495 | SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, | 1473 | SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, |
1496 | unsigned long, prot, unsigned long, flags, | 1474 | unsigned long, prot, unsigned long, flags, |
1497 | unsigned long, fd, unsigned long, pgoff) | 1475 | unsigned long, fd, unsigned long, pgoff) |
@@ -1508,12 +1486,7 @@ SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, | |||
1508 | 1486 | ||
1509 | flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); | 1487 | flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); |
1510 | 1488 | ||
1511 | ret = security_mmap_file(file, prot, flags); | 1489 | ret = vm_mmap_pgoff(file, addr, len, prot, flags, pgoff); |
1512 | if (!ret) { | ||
1513 | down_write(¤t->mm->mmap_sem); | ||
1514 | retval = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); | ||
1515 | up_write(¤t->mm->mmap_sem); | ||
1516 | } | ||
1517 | 1490 | ||
1518 | if (file) | 1491 | if (file) |
1519 | fput(file); | 1492 | fput(file); |