diff options
author | Arnd Bergmann <arnd@arndb.de> | 2019-01-16 08:15:20 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2019-01-18 03:33:18 -0500 |
commit | 58fa4a410fc31afe08d0d0c6b6d8860c22ec17c2 (patch) | |
tree | 77b202fac335c9b4e142360ccab85e75fcd6f05e /ipc/syscall.c | |
parent | 1ecff5ef0a70e7fd32a0b9cf6ad7ac8285462697 (diff) |
ipc: introduce ksys_ipc()/compat_ksys_ipc() for s390
The sys_ipc() and compat_ksys_ipc() functions are meant to only
be used from the system call table, not called by another function.
Introduce ksys_*() interfaces for this purpose, as we have done
for many other system calls.
Link: https://lore.kernel.org/lkml/20190116131527.2071570-3-arnd@arndb.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
[heiko.carstens@de.ibm.com: compile fix for !CONFIG_COMPAT]
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'ipc/syscall.c')
-rw-r--r-- | ipc/syscall.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/ipc/syscall.c b/ipc/syscall.c index 1ac06e3983c0..3cf8ad703a4d 100644 --- a/ipc/syscall.c +++ b/ipc/syscall.c | |||
@@ -17,8 +17,8 @@ | |||
17 | #include <linux/shm.h> | 17 | #include <linux/shm.h> |
18 | #include <linux/uaccess.h> | 18 | #include <linux/uaccess.h> |
19 | 19 | ||
20 | SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, | 20 | int ksys_ipc(unsigned int call, int first, unsigned long second, |
21 | unsigned long, third, void __user *, ptr, long, fifth) | 21 | unsigned long third, void __user * ptr, long fifth) |
22 | { | 22 | { |
23 | int version, ret; | 23 | int version, ret; |
24 | 24 | ||
@@ -106,6 +106,12 @@ SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, | |||
106 | return -ENOSYS; | 106 | return -ENOSYS; |
107 | } | 107 | } |
108 | } | 108 | } |
109 | |||
110 | SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, | ||
111 | unsigned long, third, void __user *, ptr, long, fifth) | ||
112 | { | ||
113 | return ksys_ipc(call, first, second, third, ptr, fifth); | ||
114 | } | ||
109 | #endif | 115 | #endif |
110 | 116 | ||
111 | #ifdef CONFIG_COMPAT | 117 | #ifdef CONFIG_COMPAT |
@@ -121,8 +127,8 @@ struct compat_ipc_kludge { | |||
121 | }; | 127 | }; |
122 | 128 | ||
123 | #ifdef CONFIG_ARCH_WANT_OLD_COMPAT_IPC | 129 | #ifdef CONFIG_ARCH_WANT_OLD_COMPAT_IPC |
124 | COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second, | 130 | int compat_ksys_ipc(u32 call, int first, int second, |
125 | u32, third, compat_uptr_t, ptr, u32, fifth) | 131 | u32 third, compat_uptr_t ptr, u32 fifth) |
126 | { | 132 | { |
127 | int version; | 133 | int version; |
128 | u32 pad; | 134 | u32 pad; |
@@ -195,5 +201,11 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second, | |||
195 | 201 | ||
196 | return -ENOSYS; | 202 | return -ENOSYS; |
197 | } | 203 | } |
204 | |||
205 | COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second, | ||
206 | u32, third, compat_uptr_t, ptr, u32, fifth) | ||
207 | { | ||
208 | return compat_ksys_ipc(call, first, second, third, ptr, fifth); | ||
209 | } | ||
198 | #endif | 210 | #endif |
199 | #endif | 211 | #endif |