diff options
author | Christoph Hellwig <hch@lst.de> | 2010-03-10 18:21:15 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-12 18:52:32 -0500 |
commit | a4679373cf4ee0e7792dc56205365732b725c2c1 (patch) | |
tree | 6cf8040f608ad46ae7c605284af1ca585fb50eaa /arch/s390/kernel/sys_s390.c | |
parent | 5d0e52830e9ae09b872567f4aca3dfb5b5918079 (diff) |
Add generic sys_old_mmap()
Add a generic implementation of the old mmap() syscall, which expects its
argument in a memory block and switch all architectures over to use it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Hirokazu Takata <takata@linux-m32r.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Reviewed-by: H. Peter Anvin <hpa@zytor.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: James Morris <jmorris@namei.org>
Cc: Andreas Schwab <schwab@linux-m68k.org>
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/s390/kernel/sys_s390.c')
-rw-r--r-- | arch/s390/kernel/sys_s390.c | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/arch/s390/kernel/sys_s390.c b/arch/s390/kernel/sys_s390.c index 86a74c9c9e63..b2563509b5a9 100644 --- a/arch/s390/kernel/sys_s390.c +++ b/arch/s390/kernel/sys_s390.c | |||
@@ -33,13 +33,12 @@ | |||
33 | #include "entry.h" | 33 | #include "entry.h" |
34 | 34 | ||
35 | /* | 35 | /* |
36 | * Perform the select(nd, in, out, ex, tv) and mmap() system | 36 | * Perform the mmap() system call. Linux for S/390 isn't able to handle more |
37 | * calls. Linux for S/390 isn't able to handle more than 5 | 37 | * than 5 system call parameters, so this system call uses a memory block |
38 | * system call parameters, so these system calls used a memory | 38 | * for parameter passing. |
39 | * block for parameter passing.. | ||
40 | */ | 39 | */ |
41 | 40 | ||
42 | struct mmap_arg_struct { | 41 | struct s390_mmap_arg_struct { |
43 | unsigned long addr; | 42 | unsigned long addr; |
44 | unsigned long len; | 43 | unsigned long len; |
45 | unsigned long prot; | 44 | unsigned long prot; |
@@ -48,9 +47,9 @@ struct mmap_arg_struct { | |||
48 | unsigned long offset; | 47 | unsigned long offset; |
49 | }; | 48 | }; |
50 | 49 | ||
51 | SYSCALL_DEFINE1(mmap2, struct mmap_arg_struct __user *, arg) | 50 | SYSCALL_DEFINE1(mmap2, struct s390_mmap_arg_struct __user *, arg) |
52 | { | 51 | { |
53 | struct mmap_arg_struct a; | 52 | struct s390_mmap_arg_struct a; |
54 | int error = -EFAULT; | 53 | int error = -EFAULT; |
55 | 54 | ||
56 | if (copy_from_user(&a, arg, sizeof(a))) | 55 | if (copy_from_user(&a, arg, sizeof(a))) |
@@ -60,23 +59,6 @@ out: | |||
60 | return error; | 59 | return error; |
61 | } | 60 | } |
62 | 61 | ||
63 | SYSCALL_DEFINE1(s390_old_mmap, struct mmap_arg_struct __user *, arg) | ||
64 | { | ||
65 | struct mmap_arg_struct a; | ||
66 | long error = -EFAULT; | ||
67 | |||
68 | if (copy_from_user(&a, arg, sizeof(a))) | ||
69 | goto out; | ||
70 | |||
71 | error = -EINVAL; | ||
72 | if (a.offset & ~PAGE_MASK) | ||
73 | goto out; | ||
74 | |||
75 | error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT); | ||
76 | out: | ||
77 | return error; | ||
78 | } | ||
79 | |||
80 | /* | 62 | /* |
81 | * sys_ipc() is the de-multiplexer for the SysV IPC calls.. | 63 | * sys_ipc() is the de-multiplexer for the SysV IPC calls.. |
82 | * | 64 | * |