diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2009-11-30 17:37:04 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-12-11 06:44:29 -0500 |
commit | f8b7256096a20436f6d0926747e3ac3d64c81d24 (patch) | |
tree | 18bcabd1de263bd2d0f8d6b763bde8b037716c5c /arch/arm/kernel | |
parent | 0067bd8a55862ac9dd212bd1c4f6f5bff1ca1301 (diff) |
Unify sys_mmap*
New helper - sys_mmap_pgoff(); switch syscalls to using it.
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/entry-common.S | 4 | ||||
-rw-r--r-- | arch/arm/kernel/sys_arm.c | 30 |
2 files changed, 3 insertions, 31 deletions
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index f0fe95b7085d..2c1db77d7848 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -416,12 +416,12 @@ sys_mmap2: | |||
416 | tst r5, #PGOFF_MASK | 416 | tst r5, #PGOFF_MASK |
417 | moveq r5, r5, lsr #PAGE_SHIFT - 12 | 417 | moveq r5, r5, lsr #PAGE_SHIFT - 12 |
418 | streq r5, [sp, #4] | 418 | streq r5, [sp, #4] |
419 | beq do_mmap2 | 419 | beq sys_mmap_pgoff |
420 | mov r0, #-EINVAL | 420 | mov r0, #-EINVAL |
421 | mov pc, lr | 421 | mov pc, lr |
422 | #else | 422 | #else |
423 | str r5, [sp, #4] | 423 | str r5, [sp, #4] |
424 | b do_mmap2 | 424 | b sys_mmap_pgoff |
425 | #endif | 425 | #endif |
426 | ENDPROC(sys_mmap2) | 426 | ENDPROC(sys_mmap2) |
427 | 427 | ||
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c index 3b897444a9bd..ae4027bd01bd 100644 --- a/arch/arm/kernel/sys_arm.c +++ b/arch/arm/kernel/sys_arm.c | |||
@@ -28,34 +28,6 @@ | |||
28 | #include <linux/ipc.h> | 28 | #include <linux/ipc.h> |
29 | #include <linux/uaccess.h> | 29 | #include <linux/uaccess.h> |
30 | 30 | ||
31 | /* common code for old and new mmaps */ | ||
32 | inline long do_mmap2( | ||
33 | unsigned long addr, unsigned long len, | ||
34 | unsigned long prot, unsigned long flags, | ||
35 | unsigned long fd, unsigned long pgoff) | ||
36 | { | ||
37 | int error = -EINVAL; | ||
38 | struct file * file = NULL; | ||
39 | |||
40 | flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); | ||
41 | |||
42 | error = -EBADF; | ||
43 | if (!(flags & MAP_ANONYMOUS)) { | ||
44 | file = fget(fd); | ||
45 | if (!file) | ||
46 | goto out; | ||
47 | } | ||
48 | |||
49 | down_write(¤t->mm->mmap_sem); | ||
50 | error = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); | ||
51 | up_write(¤t->mm->mmap_sem); | ||
52 | |||
53 | if (file) | ||
54 | fput(file); | ||
55 | out: | ||
56 | return error; | ||
57 | } | ||
58 | |||
59 | struct mmap_arg_struct { | 31 | struct mmap_arg_struct { |
60 | unsigned long addr; | 32 | unsigned long addr; |
61 | unsigned long len; | 33 | unsigned long len; |
@@ -77,7 +49,7 @@ asmlinkage int old_mmap(struct mmap_arg_struct __user *arg) | |||
77 | if (a.offset & ~PAGE_MASK) | 49 | if (a.offset & ~PAGE_MASK) |
78 | goto out; | 50 | goto out; |
79 | 51 | ||
80 | error = do_mmap2(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT); | 52 | error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT); |
81 | out: | 53 | out: |
82 | return error; | 54 | return error; |
83 | } | 55 | } |