aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-02-23 21:50:11 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-23 21:50:11 -0500
commit9e2d59ad580d590134285f361a0e80f0e98c0207 (patch)
treef3232be75781484193413f32ec82c21f6d8eb76e /arch/s390
parent5ce1a70e2f00f0bce0cab57f798ca354b9496169 (diff)
parent235b80226b986dabcbba844968f7807866bd0bfe (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
Pull signal handling cleanups from Al Viro: "This is the first pile; another one will come a bit later and will contain SYSCALL_DEFINE-related patches. - a bunch of signal-related syscalls (both native and compat) unified. - a bunch of compat syscalls switched to COMPAT_SYSCALL_DEFINE (fixing several potential problems with missing argument validation, while we are at it) - a lot of now-pointless wrappers killed - a couple of architectures (cris and hexagon) forgot to save altstack settings into sigframe, even though they used the (uninitialized) values in sigreturn; fixed. - microblaze fixes for delivery of multiple signals arriving at once - saner set of helpers for signal delivery introduced, several architectures switched to using those." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (143 commits) x86: convert to ksignal sparc: convert to ksignal arm: switch to struct ksignal * passing alpha: pass k_sigaction and siginfo_t using ksignal pointer burying unused conditionals make do_sigaltstack() static arm64: switch to generic old sigaction() (compat-only) arm64: switch to generic compat rt_sigaction() arm64: switch compat to generic old sigsuspend arm64: switch to generic compat rt_sigqueueinfo() arm64: switch to generic compat rt_sigpending() arm64: switch to generic compat rt_sigprocmask() arm64: switch to generic sigaltstack sparc: switch to generic old sigsuspend sparc: COMPAT_SYSCALL_DEFINE does all sign-extension as well as SYSCALL_DEFINE sparc: kill sign-extending wrappers for native syscalls kill sparc32_open() sparc: switch to use of generic old sigaction sparc: switch sys_compat_rt_sigaction() to COMPAT_SYSCALL_DEFINE mips: switch to generic sys_fork() and sys_clone() ...
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/Kconfig3
-rw-r--r--arch/s390/include/asm/signal.h19
-rw-r--r--arch/s390/include/asm/unistd.h3
-rw-r--r--arch/s390/kernel/compat_linux.c80
-rw-r--r--arch/s390/kernel/compat_linux.h34
-rw-r--r--arch/s390/kernel/compat_signal.c134
-rw-r--r--arch/s390/kernel/compat_wrapper.S144
-rw-r--r--arch/s390/kernel/entry.h4
-rw-r--r--arch/s390/kernel/signal.c56
-rw-r--r--arch/s390/kernel/syscalls.S46
10 files changed, 32 insertions, 491 deletions
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index b220e152aefa..f09ae7b0b4c5 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -137,6 +137,8 @@ config S390
137 select INIT_ALL_POSSIBLE 137 select INIT_ALL_POSSIBLE
138 select KTIME_SCALAR if 32BIT 138 select KTIME_SCALAR if 32BIT
139 select MODULES_USE_ELF_RELA 139 select MODULES_USE_ELF_RELA
140 select OLD_SIGSUSPEND3
141 select OLD_SIGACTION
140 select SYSCTL_EXCEPTION_TRACE 142 select SYSCTL_EXCEPTION_TRACE
141 select USE_GENERIC_SMP_HELPERS if SMP 143 select USE_GENERIC_SMP_HELPERS if SMP
142 select VIRT_CPU_ACCOUNTING 144 select VIRT_CPU_ACCOUNTING
@@ -249,6 +251,7 @@ config COMPAT
249 depends on 64BIT 251 depends on 64BIT
250 select COMPAT_BINFMT_ELF if BINFMT_ELF 252 select COMPAT_BINFMT_ELF if BINFMT_ELF
251 select ARCH_WANT_OLD_COMPAT_IPC 253 select ARCH_WANT_OLD_COMPAT_IPC
254 select COMPAT_OLD_SIGACTION
252 help 255 help
253 Select this option if you want to enable your system kernel to 256 Select this option if you want to enable your system kernel to
254 handle system-calls from ELF binaries for 31 bit ESA. This option 257 handle system-calls from ELF binaries for 31 bit ESA. This option
diff --git a/arch/s390/include/asm/signal.h b/arch/s390/include/asm/signal.h
index db7ddfaf5b79..abf9e5735943 100644
--- a/arch/s390/include/asm/signal.h
+++ b/arch/s390/include/asm/signal.h
@@ -21,22 +21,5 @@ typedef struct {
21 unsigned long sig[_NSIG_WORDS]; 21 unsigned long sig[_NSIG_WORDS];
22} sigset_t; 22} sigset_t;
23 23
24struct old_sigaction { 24#define __ARCH_HAS_SA_RESTORER
25 __sighandler_t sa_handler;
26 old_sigset_t sa_mask;
27 unsigned long sa_flags;
28 void (*sa_restorer)(void);
29};
30
31struct sigaction {
32 __sighandler_t sa_handler;
33 unsigned long sa_flags;
34 void (*sa_restorer)(void);
35 sigset_t sa_mask; /* mask last for extensibility */
36};
37
38struct k_sigaction {
39 struct sigaction sa;
40};
41
42#endif 25#endif
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h
index 636530872516..a6667a952969 100644
--- a/arch/s390/include/asm/unistd.h
+++ b/arch/s390/include/asm/unistd.h
@@ -43,15 +43,12 @@
43#define __ARCH_WANT_SYS_OLDUMOUNT 43#define __ARCH_WANT_SYS_OLDUMOUNT
44#define __ARCH_WANT_SYS_SIGPENDING 44#define __ARCH_WANT_SYS_SIGPENDING
45#define __ARCH_WANT_SYS_SIGPROCMASK 45#define __ARCH_WANT_SYS_SIGPROCMASK
46#define __ARCH_WANT_SYS_RT_SIGACTION
47#define __ARCH_WANT_SYS_RT_SIGSUSPEND
48# ifndef CONFIG_64BIT 46# ifndef CONFIG_64BIT
49# define __ARCH_WANT_STAT64 47# define __ARCH_WANT_STAT64
50# define __ARCH_WANT_SYS_TIME 48# define __ARCH_WANT_SYS_TIME
51# endif 49# endif
52# ifdef CONFIG_COMPAT 50# ifdef CONFIG_COMPAT
53# define __ARCH_WANT_COMPAT_SYS_TIME 51# define __ARCH_WANT_COMPAT_SYS_TIME
54# define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
55# endif 52# endif
56#define __ARCH_WANT_SYS_FORK 53#define __ARCH_WANT_SYS_FORK
57#define __ARCH_WANT_SYS_VFORK 54#define __ARCH_WANT_SYS_VFORK
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index 65cca95843e1..19f26de27fae 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -352,86 +352,6 @@ asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned
352 return sys_ftruncate(fd, (high << 32) | low); 352 return sys_ftruncate(fd, (high << 32) | low);
353} 353}
354 354
355asmlinkage long sys32_sched_rr_get_interval(compat_pid_t pid,
356 struct compat_timespec __user *interval)
357{
358 struct timespec t;
359 int ret;
360 mm_segment_t old_fs = get_fs ();
361
362 set_fs (KERNEL_DS);
363 ret = sys_sched_rr_get_interval(pid,
364 (struct timespec __force __user *) &t);
365 set_fs (old_fs);
366 if (put_compat_timespec(&t, interval))
367 return -EFAULT;
368 return ret;
369}
370
371asmlinkage long sys32_rt_sigprocmask(int how, compat_sigset_t __user *set,
372 compat_sigset_t __user *oset, size_t sigsetsize)
373{
374 sigset_t s;
375 compat_sigset_t s32;
376 int ret;
377 mm_segment_t old_fs = get_fs();
378
379 if (set) {
380 if (copy_from_user (&s32, set, sizeof(compat_sigset_t)))
381 return -EFAULT;
382 s.sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32);
383 }
384 set_fs (KERNEL_DS);
385 ret = sys_rt_sigprocmask(how,
386 set ? (sigset_t __force __user *) &s : NULL,
387 oset ? (sigset_t __force __user *) &s : NULL,
388 sigsetsize);
389 set_fs (old_fs);
390 if (ret) return ret;
391 if (oset) {
392 s32.sig[1] = (s.sig[0] >> 32);
393 s32.sig[0] = s.sig[0];
394 if (copy_to_user (oset, &s32, sizeof(compat_sigset_t)))
395 return -EFAULT;
396 }
397 return 0;
398}
399
400asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *set,
401 size_t sigsetsize)
402{
403 sigset_t s;
404 compat_sigset_t s32;
405 int ret;
406 mm_segment_t old_fs = get_fs();
407
408 set_fs (KERNEL_DS);
409 ret = sys_rt_sigpending((sigset_t __force __user *) &s, sigsetsize);
410 set_fs (old_fs);
411 if (!ret) {
412 s32.sig[1] = (s.sig[0] >> 32);
413 s32.sig[0] = s.sig[0];
414 if (copy_to_user (set, &s32, sizeof(compat_sigset_t)))
415 return -EFAULT;
416 }
417 return ret;
418}
419
420asmlinkage long
421sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo)
422{
423 siginfo_t info;
424 int ret;
425 mm_segment_t old_fs = get_fs();
426
427 if (copy_siginfo_from_user32(&info, uinfo))
428 return -EFAULT;
429 set_fs (KERNEL_DS);
430 ret = sys_rt_sigqueueinfo(pid, sig, (siginfo_t __force __user *) &info);
431 set_fs (old_fs);
432 return ret;
433}
434
435asmlinkage long sys32_pread64(unsigned int fd, char __user *ubuf, 355asmlinkage long sys32_pread64(unsigned int fd, char __user *ubuf,
436 size_t count, u32 poshi, u32 poslo) 356 size_t count, u32 poshi, u32 poslo)
437{ 357{
diff --git a/arch/s390/kernel/compat_linux.h b/arch/s390/kernel/compat_linux.h
index d4d0239970ac..00d92a5a6f6c 100644
--- a/arch/s390/kernel/compat_linux.h
+++ b/arch/s390/kernel/compat_linux.h
@@ -17,13 +17,6 @@ struct ipc_kludge_32 {
17 __s32 msgtyp; 17 __s32 msgtyp;
18}; 18};
19 19
20struct old_sigaction32 {
21 __u32 sa_handler; /* Really a pointer, but need to deal with 32 bits */
22 compat_old_sigset_t sa_mask; /* A 32 bit mask */
23 __u32 sa_flags;
24 __u32 sa_restorer; /* Another 32 bit pointer */
25};
26
27/* asm/sigcontext.h */ 20/* asm/sigcontext.h */
28typedef union 21typedef union
29{ 22{
@@ -68,24 +61,12 @@ struct sigcontext32
68}; 61};
69 62
70/* asm/signal.h */ 63/* asm/signal.h */
71struct sigaction32 {
72 __u32 sa_handler; /* pointer */
73 __u32 sa_flags;
74 __u32 sa_restorer; /* pointer */
75 compat_sigset_t sa_mask; /* mask last for extensibility */
76};
77
78typedef struct {
79 __u32 ss_sp; /* pointer */
80 int ss_flags;
81 compat_size_t ss_size;
82} stack_t32;
83 64
84/* asm/ucontext.h */ 65/* asm/ucontext.h */
85struct ucontext32 { 66struct ucontext32 {
86 __u32 uc_flags; 67 __u32 uc_flags;
87 __u32 uc_link; /* pointer */ 68 __u32 uc_link; /* pointer */
88 stack_t32 uc_stack; 69 compat_stack_t uc_stack;
89 _sigregs32 uc_mcontext; 70 _sigregs32 uc_mcontext;
90 compat_sigset_t uc_sigmask; /* mask last for extensibility */ 71 compat_sigset_t uc_sigmask; /* mask last for extensibility */
91}; 72};
@@ -93,8 +74,6 @@ struct ucontext32 {
93struct stat64_emu31; 74struct stat64_emu31;
94struct mmap_arg_struct_emu31; 75struct mmap_arg_struct_emu31;
95struct fadvise64_64_args; 76struct fadvise64_64_args;
96struct old_sigaction32;
97struct old_sigaction32;
98 77
99long sys32_chown16(const char __user * filename, u16 user, u16 group); 78long sys32_chown16(const char __user * filename, u16 user, u16 group);
100long sys32_lchown16(const char __user * filename, u16 user, u16 group); 79long sys32_lchown16(const char __user * filename, u16 user, u16 group);
@@ -119,12 +98,6 @@ long sys32_ipc(u32 call, int first, int second, int third, u32 ptr);
119long sys32_truncate64(const char __user * path, unsigned long high, 98long sys32_truncate64(const char __user * path, unsigned long high,
120 unsigned long low); 99 unsigned long low);
121long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low); 100long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low);
122long sys32_sched_rr_get_interval(compat_pid_t pid,
123 struct compat_timespec __user *interval);
124long sys32_rt_sigprocmask(int how, compat_sigset_t __user *set,
125 compat_sigset_t __user *oset, size_t sigsetsize);
126long sys32_rt_sigpending(compat_sigset_t __user *set, size_t sigsetsize);
127long sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo);
128long sys32_init_module(void __user *umod, unsigned long len, 101long sys32_init_module(void __user *umod, unsigned long len,
129 const char __user *uargs); 102 const char __user *uargs);
130long sys32_delete_module(const char __user *name_user, unsigned int flags); 103long sys32_delete_module(const char __user *name_user, unsigned int flags);
@@ -149,9 +122,4 @@ long sys32_read(unsigned int fd, char __user * buf, size_t count);
149long sys32_write(unsigned int fd, const char __user * buf, size_t count); 122long sys32_write(unsigned int fd, const char __user * buf, size_t count);
150long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise); 123long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise);
151long sys32_fadvise64_64(struct fadvise64_64_args __user *args); 124long sys32_fadvise64_64(struct fadvise64_64_args __user *args);
152long sys32_sigaction(int sig, const struct old_sigaction32 __user *act,
153 struct old_sigaction32 __user *oact);
154long sys32_rt_sigaction(int sig, const struct sigaction32 __user *act,
155 struct sigaction32 __user *oact, size_t sigsetsize);
156long sys32_sigaltstack(const stack_t32 __user *uss, stack_t32 __user *uoss);
157#endif /* _ASM_S390X_S390_H */ 125#endif /* _ASM_S390X_S390_H */
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index 593fcc9253fc..3e71194c1902 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -157,122 +157,6 @@ int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from)
157 return err; 157 return err;
158} 158}
159 159
160asmlinkage long
161sys32_sigaction(int sig, const struct old_sigaction32 __user *act,
162 struct old_sigaction32 __user *oact)
163{
164 struct k_sigaction new_ka, old_ka;
165 unsigned long sa_handler, sa_restorer;
166 int ret;
167
168 if (act) {
169 compat_old_sigset_t mask;
170 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
171 __get_user(sa_handler, &act->sa_handler) ||
172 __get_user(sa_restorer, &act->sa_restorer) ||
173 __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
174 __get_user(mask, &act->sa_mask))
175 return -EFAULT;
176 new_ka.sa.sa_handler = (__sighandler_t) sa_handler;
177 new_ka.sa.sa_restorer = (void (*)(void)) sa_restorer;
178 siginitset(&new_ka.sa.sa_mask, mask);
179 }
180
181 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
182
183 if (!ret && oact) {
184 sa_handler = (unsigned long) old_ka.sa.sa_handler;
185 sa_restorer = (unsigned long) old_ka.sa.sa_restorer;
186 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
187 __put_user(sa_handler, &oact->sa_handler) ||
188 __put_user(sa_restorer, &oact->sa_restorer) ||
189 __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
190 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
191 return -EFAULT;
192 }
193
194 return ret;
195}
196
197asmlinkage long
198sys32_rt_sigaction(int sig, const struct sigaction32 __user *act,
199 struct sigaction32 __user *oact, size_t sigsetsize)
200{
201 struct k_sigaction new_ka, old_ka;
202 unsigned long sa_handler;
203 int ret;
204 compat_sigset_t set32;
205
206 /* XXX: Don't preclude handling different sized sigset_t's. */
207 if (sigsetsize != sizeof(compat_sigset_t))
208 return -EINVAL;
209
210 if (act) {
211 ret = get_user(sa_handler, &act->sa_handler);
212 ret |= __copy_from_user(&set32, &act->sa_mask,
213 sizeof(compat_sigset_t));
214 new_ka.sa.sa_mask.sig[0] =
215 set32.sig[0] | (((long)set32.sig[1]) << 32);
216 ret |= __get_user(new_ka.sa.sa_flags, &act->sa_flags);
217
218 if (ret)
219 return -EFAULT;
220 new_ka.sa.sa_handler = (__sighandler_t) sa_handler;
221 }
222
223 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
224
225 if (!ret && oact) {
226 set32.sig[1] = (old_ka.sa.sa_mask.sig[0] >> 32);
227 set32.sig[0] = old_ka.sa.sa_mask.sig[0];
228 ret = put_user((unsigned long)old_ka.sa.sa_handler, &oact->sa_handler);
229 ret |= __copy_to_user(&oact->sa_mask, &set32,
230 sizeof(compat_sigset_t));
231 ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
232 }
233
234 return ret;
235}
236
237asmlinkage long
238sys32_sigaltstack(const stack_t32 __user *uss, stack_t32 __user *uoss)
239{
240 struct pt_regs *regs = task_pt_regs(current);
241 stack_t kss, koss;
242 unsigned long ss_sp;
243 int ret, err = 0;
244 mm_segment_t old_fs = get_fs();
245
246 if (uss) {
247 if (!access_ok(VERIFY_READ, uss, sizeof(*uss)))
248 return -EFAULT;
249 err |= __get_user(ss_sp, &uss->ss_sp);
250 err |= __get_user(kss.ss_size, &uss->ss_size);
251 err |= __get_user(kss.ss_flags, &uss->ss_flags);
252 if (err)
253 return -EFAULT;
254 kss.ss_sp = (void __user *) ss_sp;
255 }
256
257 set_fs (KERNEL_DS);
258 ret = do_sigaltstack((stack_t __force __user *) (uss ? &kss : NULL),
259 (stack_t __force __user *) (uoss ? &koss : NULL),
260 regs->gprs[15]);
261 set_fs (old_fs);
262
263 if (!ret && uoss) {
264 if (!access_ok(VERIFY_WRITE, uoss, sizeof(*uoss)))
265 return -EFAULT;
266 ss_sp = (unsigned long) koss.ss_sp;
267 err |= __put_user(ss_sp, &uoss->ss_sp);
268 err |= __put_user(koss.ss_size, &uoss->ss_size);
269 err |= __put_user(koss.ss_flags, &uoss->ss_flags);
270 if (err)
271 return -EFAULT;
272 }
273 return ret;
274}
275
276static int save_sigregs32(struct pt_regs *regs, _sigregs32 __user *sregs) 160static int save_sigregs32(struct pt_regs *regs, _sigregs32 __user *sregs)
277{ 161{
278 _s390_regs_common32 regs32; 162 _s390_regs_common32 regs32;
@@ -380,10 +264,6 @@ asmlinkage long sys32_rt_sigreturn(void)
380 struct pt_regs *regs = task_pt_regs(current); 264 struct pt_regs *regs = task_pt_regs(current);
381 rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15]; 265 rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15];
382 sigset_t set; 266 sigset_t set;
383 stack_t st;
384 __u32 ss_sp;
385 int err;
386 mm_segment_t old_fs = get_fs();
387 267
388 if (!access_ok(VERIFY_READ, frame, sizeof(*frame))) 268 if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
389 goto badframe; 269 goto badframe;
@@ -394,15 +274,8 @@ asmlinkage long sys32_rt_sigreturn(void)
394 goto badframe; 274 goto badframe;
395 if (restore_sigregs_gprs_high(regs, frame->gprs_high)) 275 if (restore_sigregs_gprs_high(regs, frame->gprs_high))
396 goto badframe; 276 goto badframe;
397 err = __get_user(ss_sp, &frame->uc.uc_stack.ss_sp); 277 if (compat_restore_altstack(&frame->uc.uc_stack))
398 st.ss_sp = compat_ptr(ss_sp);
399 err |= __get_user(st.ss_size, &frame->uc.uc_stack.ss_size);
400 err |= __get_user(st.ss_flags, &frame->uc.uc_stack.ss_flags);
401 if (err)
402 goto badframe; 278 goto badframe;
403 set_fs (KERNEL_DS);
404 do_sigaltstack((stack_t __force __user *)&st, NULL, regs->gprs[15]);
405 set_fs (old_fs);
406 return regs->gprs[2]; 279 return regs->gprs[2];
407badframe: 280badframe:
408 force_sig(SIGSEGV, current); 281 force_sig(SIGSEGV, current);
@@ -530,10 +403,7 @@ static int setup_rt_frame32(int sig, struct k_sigaction *ka, siginfo_t *info,
530 /* Create the ucontext. */ 403 /* Create the ucontext. */
531 err |= __put_user(UC_EXTENDED, &frame->uc.uc_flags); 404 err |= __put_user(UC_EXTENDED, &frame->uc.uc_flags);
532 err |= __put_user(0, &frame->uc.uc_link); 405 err |= __put_user(0, &frame->uc.uc_link);
533 err |= __put_user(current->sas_ss_sp, &frame->uc.uc_stack.ss_sp); 406 err |= __compat_save_altstack(&frame->uc.uc_stack, regs->gprs[15]);
534 err |= __put_user(sas_ss_flags(regs->gprs[15]),
535 &frame->uc.uc_stack.ss_flags);
536 err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
537 err |= save_sigregs32(regs, &frame->uc.uc_mcontext); 407 err |= save_sigregs32(regs, &frame->uc.uc_mcontext);
538 err |= save_sigregs_gprs_high(regs, frame->gprs_high); 408 err |= save_sigregs_gprs_high(regs, frame->gprs_high);
539 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); 409 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index 9b9a805656b5..c14faf39ae36 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -24,12 +24,6 @@ ENTRY(sys32_write_wrapper)
24 llgfr %r4,%r4 # size_t 24 llgfr %r4,%r4 # size_t
25 jg sys32_write # branch to system call 25 jg sys32_write # branch to system call
26 26
27ENTRY(sys32_open_wrapper)
28 llgtr %r2,%r2 # const char *
29 lgfr %r3,%r3 # int
30 lgfr %r4,%r4 # int
31 jg compat_sys_open # branch to system call
32
33ENTRY(sys32_close_wrapper) 27ENTRY(sys32_close_wrapper)
34 llgfr %r2,%r2 # unsigned int 28 llgfr %r2,%r2 # unsigned int
35 jg sys_close # branch to system call 29 jg sys_close # branch to system call
@@ -226,12 +220,6 @@ ENTRY(sys32_dup2_wrapper)
226 220
227#sys32_setsid_wrapper # void 221#sys32_setsid_wrapper # void
228 222
229ENTRY(sys32_sigaction_wrapper)
230 lgfr %r2,%r2 # int
231 llgtr %r3,%r3 # const struct old_sigaction *
232 llgtr %r4,%r4 # struct old_sigaction32 *
233 jg sys32_sigaction # branch to system call
234
235ENTRY(sys32_setreuid16_wrapper) 223ENTRY(sys32_setreuid16_wrapper)
236 llgfr %r2,%r2 # __kernel_old_uid_emu31_t 224 llgfr %r2,%r2 # __kernel_old_uid_emu31_t
237 llgfr %r3,%r3 # __kernel_old_uid_emu31_t 225 llgfr %r3,%r3 # __kernel_old_uid_emu31_t
@@ -396,17 +384,6 @@ ENTRY(sys32_syslog_wrapper)
396 lgfr %r4,%r4 # int 384 lgfr %r4,%r4 # int
397 jg sys_syslog # branch to system call 385 jg sys_syslog # branch to system call
398 386
399ENTRY(compat_sys_setitimer_wrapper)
400 lgfr %r2,%r2 # int
401 llgtr %r3,%r3 # struct itimerval_emu31 *
402 llgtr %r4,%r4 # struct itimerval_emu31 *
403 jg compat_sys_setitimer # branch to system call
404
405ENTRY(compat_sys_getitimer_wrapper)
406 lgfr %r2,%r2 # int
407 llgtr %r3,%r3 # struct itimerval_emu31 *
408 jg compat_sys_getitimer # branch to system call
409
410ENTRY(compat_sys_newstat_wrapper) 387ENTRY(compat_sys_newstat_wrapper)
411 llgtr %r2,%r2 # char * 388 llgtr %r2,%r2 # char *
412 llgtr %r3,%r3 # struct stat_emu31 * 389 llgtr %r3,%r3 # struct stat_emu31 *
@@ -424,13 +401,6 @@ ENTRY(compat_sys_newfstat_wrapper)
424 401
425#sys32_vhangup_wrapper # void 402#sys32_vhangup_wrapper # void
426 403
427ENTRY(compat_sys_wait4_wrapper)
428 lgfr %r2,%r2 # pid_t
429 llgtr %r3,%r3 # unsigned int *
430 lgfr %r4,%r4 # int
431 llgtr %r5,%r5 # struct rusage *
432 jg compat_sys_wait4 # branch to system call
433
434ENTRY(sys32_swapoff_wrapper) 404ENTRY(sys32_swapoff_wrapper)
435 llgtr %r2,%r2 # const char * 405 llgtr %r2,%r2 # const char *
436 jg sys_swapoff # branch to system call 406 jg sys_swapoff # branch to system call
@@ -474,12 +444,6 @@ ENTRY(sys32_mprotect_wrapper)
474 llgfr %r4,%r4 # unsigned long 444 llgfr %r4,%r4 # unsigned long
475 jg sys_mprotect # branch to system call 445 jg sys_mprotect # branch to system call
476 446
477ENTRY(compat_sys_sigprocmask_wrapper)
478 lgfr %r2,%r2 # int
479 llgtr %r3,%r3 # compat_old_sigset_t *
480 llgtr %r4,%r4 # compat_old_sigset_t *
481 jg compat_sys_sigprocmask # branch to system call
482
483ENTRY(sys_init_module_wrapper) 447ENTRY(sys_init_module_wrapper)
484 llgtr %r2,%r2 # void * 448 llgtr %r2,%r2 # void *
485 llgfr %r3,%r3 # unsigned long 449 llgfr %r3,%r3 # unsigned long
@@ -628,11 +592,6 @@ ENTRY(sys32_sched_get_priority_min_wrapper)
628 lgfr %r2,%r2 # int 592 lgfr %r2,%r2 # int
629 jg sys_sched_get_priority_min # branch to system call 593 jg sys_sched_get_priority_min # branch to system call
630 594
631ENTRY(sys32_sched_rr_get_interval_wrapper)
632 lgfr %r2,%r2 # pid_t
633 llgtr %r3,%r3 # struct compat_timespec *
634 jg sys32_sched_rr_get_interval # branch to system call
635
636ENTRY(compat_sys_nanosleep_wrapper) 595ENTRY(compat_sys_nanosleep_wrapper)
637 llgtr %r2,%r2 # struct compat_timespec * 596 llgtr %r2,%r2 # struct compat_timespec *
638 llgtr %r3,%r3 # struct compat_timespec * 597 llgtr %r3,%r3 # struct compat_timespec *
@@ -686,43 +645,6 @@ ENTRY(sys32_prctl_wrapper)
686 645
687#sys32_rt_sigreturn_wrapper # done in rt_sigreturn_glue 646#sys32_rt_sigreturn_wrapper # done in rt_sigreturn_glue
688 647
689ENTRY(sys32_rt_sigaction_wrapper)
690 lgfr %r2,%r2 # int
691 llgtr %r3,%r3 # const struct sigaction_emu31 *
692 llgtr %r4,%r4 # const struct sigaction_emu31 *
693 llgfr %r5,%r5 # size_t
694 jg sys32_rt_sigaction # branch to system call
695
696ENTRY(sys32_rt_sigprocmask_wrapper)
697 lgfr %r2,%r2 # int
698 llgtr %r3,%r3 # old_sigset_emu31 *
699 llgtr %r4,%r4 # old_sigset_emu31 *
700 llgfr %r5,%r5 # size_t
701 jg sys32_rt_sigprocmask # branch to system call
702
703ENTRY(sys32_rt_sigpending_wrapper)
704 llgtr %r2,%r2 # sigset_emu31 *
705 llgfr %r3,%r3 # size_t
706 jg sys32_rt_sigpending # branch to system call
707
708ENTRY(compat_sys_rt_sigtimedwait_wrapper)
709 llgtr %r2,%r2 # const sigset_emu31_t *
710 llgtr %r3,%r3 # siginfo_emu31_t *
711 llgtr %r4,%r4 # const struct compat_timespec *
712 llgfr %r5,%r5 # size_t
713 jg compat_sys_rt_sigtimedwait # branch to system call
714
715ENTRY(sys32_rt_sigqueueinfo_wrapper)
716 lgfr %r2,%r2 # int
717 lgfr %r3,%r3 # int
718 llgtr %r4,%r4 # siginfo_emu31_t *
719 jg sys32_rt_sigqueueinfo # branch to system call
720
721ENTRY(compat_sys_rt_sigsuspend_wrapper)
722 llgtr %r2,%r2 # compat_sigset_t *
723 llgfr %r3,%r3 # compat_size_t
724 jg compat_sys_rt_sigsuspend
725
726ENTRY(sys32_pread64_wrapper) 648ENTRY(sys32_pread64_wrapper)
727 llgfr %r2,%r2 # unsigned int 649 llgfr %r2,%r2 # unsigned int
728 llgtr %r3,%r3 # char * 650 llgtr %r3,%r3 # char *
@@ -760,11 +682,6 @@ ENTRY(sys32_capset_wrapper)
760 llgtr %r3,%r3 # const cap_user_data_t 682 llgtr %r3,%r3 # const cap_user_data_t
761 jg sys_capset # branch to system call 683 jg sys_capset # branch to system call
762 684
763ENTRY(sys32_sigaltstack_wrapper)
764 llgtr %r2,%r2 # const stack_emu31_t *
765 llgtr %r3,%r3 # stack_emu31_t *
766 jg sys32_sigaltstack
767
768ENTRY(sys32_sendfile_wrapper) 685ENTRY(sys32_sendfile_wrapper)
769 lgfr %r2,%r2 # int 686 lgfr %r2,%r2 # int
770 lgfr %r3,%r3 # int 687 lgfr %r3,%r3 # int
@@ -921,16 +838,6 @@ ENTRY(sys32_fstat64_wrapper)
921 llgtr %r3,%r3 # struct stat64 * 838 llgtr %r3,%r3 # struct stat64 *
922 jg sys32_fstat64 # branch to system call 839 jg sys32_fstat64 # branch to system call
923 840
924ENTRY(compat_sys_futex_wrapper)
925 llgtr %r2,%r2 # u32 *
926 lgfr %r3,%r3 # int
927 lgfr %r4,%r4 # int
928 llgtr %r5,%r5 # struct compat_timespec *
929 llgtr %r6,%r6 # u32 *
930 lgf %r0,164(%r15) # int
931 stg %r0,160(%r15)
932 jg compat_sys_futex # branch to system call
933
934ENTRY(sys32_setxattr_wrapper) 841ENTRY(sys32_setxattr_wrapper)
935 llgtr %r2,%r2 # char * 842 llgtr %r2,%r2 # char *
936 llgtr %r3,%r3 # char * 843 llgtr %r3,%r3 # char *
@@ -1216,14 +1123,6 @@ ENTRY(sys32_remap_file_pages_wrapper)
1216 llgfr %r6,%r6 # unsigned long 1123 llgfr %r6,%r6 # unsigned long
1217 jg sys_remap_file_pages 1124 jg sys_remap_file_pages
1218 1125
1219ENTRY(compat_sys_waitid_wrapper)
1220 lgfr %r2,%r2 # int
1221 lgfr %r3,%r3 # pid_t
1222 llgtr %r4,%r4 # siginfo_emu31_t *
1223 lgfr %r5,%r5 # int
1224 llgtr %r6,%r6 # struct rusage_emu31 *
1225 jg compat_sys_waitid
1226
1227ENTRY(compat_sys_kexec_load_wrapper) 1126ENTRY(compat_sys_kexec_load_wrapper)
1228 llgfr %r2,%r2 # unsigned long 1127 llgfr %r2,%r2 # unsigned long
1229 llgfr %r3,%r3 # unsigned long 1128 llgfr %r3,%r3 # unsigned long
@@ -1253,13 +1152,6 @@ ENTRY(sys_inotify_rm_watch_wrapper)
1253 llgfr %r3,%r3 # u32 1152 llgfr %r3,%r3 # u32
1254 jg sys_inotify_rm_watch 1153 jg sys_inotify_rm_watch
1255 1154
1256ENTRY(compat_sys_openat_wrapper)
1257 llgfr %r2,%r2 # unsigned int
1258 llgtr %r3,%r3 # const char *
1259 lgfr %r4,%r4 # int
1260 lgfr %r5,%r5 # int
1261 jg compat_sys_openat
1262
1263ENTRY(sys_mkdirat_wrapper) 1155ENTRY(sys_mkdirat_wrapper)
1264 lgfr %r2,%r2 # int 1156 lgfr %r2,%r2 # int
1265 llgtr %r3,%r3 # const char * 1157 llgtr %r3,%r3 # const char *
@@ -1362,17 +1254,6 @@ ENTRY(sys_unshare_wrapper)
1362 llgfr %r2,%r2 # unsigned long 1254 llgfr %r2,%r2 # unsigned long
1363 jg sys_unshare 1255 jg sys_unshare
1364 1256
1365ENTRY(compat_sys_set_robust_list_wrapper)
1366 llgtr %r2,%r2 # struct compat_robust_list_head *
1367 llgfr %r3,%r3 # size_t
1368 jg compat_sys_set_robust_list
1369
1370ENTRY(compat_sys_get_robust_list_wrapper)
1371 lgfr %r2,%r2 # int
1372 llgtr %r3,%r3 # compat_uptr_t_t *
1373 llgtr %r4,%r4 # compat_size_t *
1374 jg compat_sys_get_robust_list
1375
1376ENTRY(sys_splice_wrapper) 1257ENTRY(sys_splice_wrapper)
1377 lgfr %r2,%r2 # int 1258 lgfr %r2,%r2 # int
1378 llgtr %r3,%r3 # loff_t * 1259 llgtr %r3,%r3 # loff_t *
@@ -1458,18 +1339,6 @@ ENTRY(sys_timerfd_create_wrapper)
1458 lgfr %r3,%r3 # int 1339 lgfr %r3,%r3 # int
1459 jg sys_timerfd_create 1340 jg sys_timerfd_create
1460 1341
1461ENTRY(compat_sys_timerfd_settime_wrapper)
1462 lgfr %r2,%r2 # int
1463 lgfr %r3,%r3 # int
1464 llgtr %r4,%r4 # struct compat_itimerspec *
1465 llgtr %r5,%r5 # struct compat_itimerspec *
1466 jg compat_sys_timerfd_settime
1467
1468ENTRY(compat_sys_timerfd_gettime_wrapper)
1469 lgfr %r2,%r2 # int
1470 llgtr %r3,%r3 # struct compat_itimerspec *
1471 jg compat_sys_timerfd_gettime
1472
1473ENTRY(compat_sys_signalfd4_wrapper) 1342ENTRY(compat_sys_signalfd4_wrapper)
1474 lgfr %r2,%r2 # int 1343 lgfr %r2,%r2 # int
1475 llgtr %r3,%r3 # compat_sigset_t * 1344 llgtr %r3,%r3 # compat_sigset_t *
@@ -1550,13 +1419,6 @@ ENTRY(compat_sys_pwritev_wrapper)
1550 llgfr %r6,%r6 # u32 1419 llgfr %r6,%r6 # u32
1551 jg compat_sys_pwritev # branch to system call 1420 jg compat_sys_pwritev # branch to system call
1552 1421
1553ENTRY(compat_sys_rt_tgsigqueueinfo_wrapper)
1554 lgfr %r2,%r2 # compat_pid_t
1555 lgfr %r3,%r3 # compat_pid_t
1556 lgfr %r4,%r4 # int
1557 llgtr %r5,%r5 # struct compat_siginfo *
1558 jg compat_sys_rt_tgsigqueueinfo_wrapper # branch to system call
1559
1560ENTRY(sys_perf_event_open_wrapper) 1422ENTRY(sys_perf_event_open_wrapper)
1561 llgtr %r2,%r2 # const struct perf_event_attr * 1423 llgtr %r2,%r2 # const struct perf_event_attr *
1562 lgfr %r3,%r3 # pid_t 1424 lgfr %r3,%r3 # pid_t
@@ -1607,12 +1469,6 @@ ENTRY(sys_name_to_handle_at_wrapper)
1607 lgfr %r6,%r6 # int 1469 lgfr %r6,%r6 # int
1608 jg sys_name_to_handle_at 1470 jg sys_name_to_handle_at
1609 1471
1610ENTRY(compat_sys_open_by_handle_at_wrapper)
1611 lgfr %r2,%r2 # int
1612 llgtr %r3,%r3 # struct file_handle __user *
1613 lgfr %r4,%r4 # int
1614 jg compat_sys_open_by_handle_at
1615
1616ENTRY(compat_sys_clock_adjtime_wrapper) 1472ENTRY(compat_sys_clock_adjtime_wrapper)
1617 lgfr %r2,%r2 # clockid_t (int) 1473 lgfr %r2,%r2 # clockid_t (int)
1618 llgtr %r3,%r3 # struct compat_timex __user * 1474 llgtr %r3,%r3 # struct compat_timex __user *
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
index 2711936fe706..c3a736a3ed44 100644
--- a/arch/s390/kernel/entry.h
+++ b/arch/s390/kernel/entry.h
@@ -73,10 +73,6 @@ long sys_s390_fadvise64(int fd, u32 offset_high, u32 offset_low,
73long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args); 73long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args);
74long sys_s390_fallocate(int fd, int mode, loff_t offset, u32 len_high, 74long sys_s390_fallocate(int fd, int mode, loff_t offset, u32 len_high,
75 u32 len_low); 75 u32 len_low);
76long sys_sigsuspend(int history0, int history1, old_sigset_t mask);
77long sys_sigaction(int sig, const struct old_sigaction __user *act,
78 struct old_sigaction __user *oact);
79long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss);
80long sys_sigreturn(void); 76long sys_sigreturn(void);
81long sys_rt_sigreturn(void); 77long sys_rt_sigreturn(void);
82long sys32_sigreturn(void); 78long sys32_sigreturn(void);
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index c3ff70a7b247..9c6e747a5e1e 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -48,54 +48,6 @@ typedef struct
48 struct ucontext uc; 48 struct ucontext uc;
49} rt_sigframe; 49} rt_sigframe;
50 50
51/*
52 * Atomically swap in the new signal mask, and wait for a signal.
53 */
54SYSCALL_DEFINE3(sigsuspend, int, history0, int, history1, old_sigset_t, mask)
55{
56 sigset_t blocked;
57 siginitset(&blocked, mask);
58 return sigsuspend(&blocked);
59}
60
61SYSCALL_DEFINE3(sigaction, int, sig, const struct old_sigaction __user *, act,
62 struct old_sigaction __user *, oact)
63{
64 struct k_sigaction new_ka, old_ka;
65 int ret;
66
67 if (act) {
68 old_sigset_t mask;
69 if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
70 __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
71 __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) ||
72 __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
73 __get_user(mask, &act->sa_mask))
74 return -EFAULT;
75 siginitset(&new_ka.sa.sa_mask, mask);
76 }
77
78 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
79
80 if (!ret && oact) {
81 if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
82 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
83 __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) ||
84 __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
85 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
86 return -EFAULT;
87 }
88
89 return ret;
90}
91
92SYSCALL_DEFINE2(sigaltstack, const stack_t __user *, uss,
93 stack_t __user *, uoss)
94{
95 struct pt_regs *regs = task_pt_regs(current);
96 return do_sigaltstack(uss, uoss, regs->gprs[15]);
97}
98
99/* Returns non-zero on fault. */ 51/* Returns non-zero on fault. */
100static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs) 52static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
101{ 53{
@@ -190,8 +142,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
190 set_current_blocked(&set); 142 set_current_blocked(&set);
191 if (restore_sigregs(regs, &frame->uc.uc_mcontext)) 143 if (restore_sigregs(regs, &frame->uc.uc_mcontext))
192 goto badframe; 144 goto badframe;
193 if (do_sigaltstack(&frame->uc.uc_stack, NULL, 145 if (restore_altstack(&frame->uc.uc_stack))
194 regs->gprs[15]) == -EFAULT)
195 goto badframe; 146 goto badframe;
196 return regs->gprs[2]; 147 return regs->gprs[2];
197badframe: 148badframe:
@@ -325,10 +276,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
325 /* Create the ucontext. */ 276 /* Create the ucontext. */
326 err |= __put_user(0, &frame->uc.uc_flags); 277 err |= __put_user(0, &frame->uc.uc_flags);
327 err |= __put_user(NULL, &frame->uc.uc_link); 278 err |= __put_user(NULL, &frame->uc.uc_link);
328 err |= __put_user((void __user *)current->sas_ss_sp, &frame->uc.uc_stack.ss_sp); 279 err |= __save_altstack(&frame->uc.uc_stack, regs->gprs[15]);
329 err |= __put_user(sas_ss_flags(regs->gprs[15]),
330 &frame->uc.uc_stack.ss_flags);
331 err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
332 err |= save_sigregs(regs, &frame->uc.uc_mcontext); 280 err |= save_sigregs(regs, &frame->uc.uc_mcontext);
333 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); 281 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
334 if (err) 282 if (err)
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index 6a6c61f94dd3..aaac708aa110 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -13,7 +13,7 @@ SYSCALL(sys_exit,sys_exit,sys32_exit_wrapper)
13SYSCALL(sys_fork,sys_fork,sys_fork) 13SYSCALL(sys_fork,sys_fork,sys_fork)
14SYSCALL(sys_read,sys_read,sys32_read_wrapper) 14SYSCALL(sys_read,sys_read,sys32_read_wrapper)
15SYSCALL(sys_write,sys_write,sys32_write_wrapper) 15SYSCALL(sys_write,sys_write,sys32_write_wrapper)
16SYSCALL(sys_open,sys_open,sys32_open_wrapper) /* 5 */ 16SYSCALL(sys_open,sys_open,compat_sys_open) /* 5 */
17SYSCALL(sys_close,sys_close,sys32_close_wrapper) 17SYSCALL(sys_close,sys_close,sys32_close_wrapper)
18SYSCALL(sys_restart_syscall,sys_restart_syscall,sys_restart_syscall) 18SYSCALL(sys_restart_syscall,sys_restart_syscall,sys_restart_syscall)
19SYSCALL(sys_creat,sys_creat,sys32_creat_wrapper) 19SYSCALL(sys_creat,sys_creat,sys32_creat_wrapper)
@@ -75,7 +75,7 @@ SYSCALL(sys_dup2,sys_dup2,sys32_dup2_wrapper)
75SYSCALL(sys_getppid,sys_getppid,sys_getppid) 75SYSCALL(sys_getppid,sys_getppid,sys_getppid)
76SYSCALL(sys_getpgrp,sys_getpgrp,sys_getpgrp) /* 65 */ 76SYSCALL(sys_getpgrp,sys_getpgrp,sys_getpgrp) /* 65 */
77SYSCALL(sys_setsid,sys_setsid,sys_setsid) 77SYSCALL(sys_setsid,sys_setsid,sys_setsid)
78SYSCALL(sys_sigaction,sys_sigaction,sys32_sigaction_wrapper) 78SYSCALL(sys_sigaction,sys_sigaction,compat_sys_sigaction)
79NI_SYSCALL /* old sgetmask syscall*/ 79NI_SYSCALL /* old sgetmask syscall*/
80NI_SYSCALL /* old ssetmask syscall*/ 80NI_SYSCALL /* old ssetmask syscall*/
81SYSCALL(sys_setreuid16,sys_ni_syscall,sys32_setreuid16_wrapper) /* old setreuid16 syscall */ 81SYSCALL(sys_setreuid16,sys_ni_syscall,sys32_setreuid16_wrapper) /* old setreuid16 syscall */
@@ -112,8 +112,8 @@ SYSCALL(sys_fstatfs,sys_fstatfs,compat_sys_fstatfs_wrapper) /* 100 */
112NI_SYSCALL /* ioperm for i386 */ 112NI_SYSCALL /* ioperm for i386 */
113SYSCALL(sys_socketcall,sys_socketcall,compat_sys_socketcall_wrapper) 113SYSCALL(sys_socketcall,sys_socketcall,compat_sys_socketcall_wrapper)
114SYSCALL(sys_syslog,sys_syslog,sys32_syslog_wrapper) 114SYSCALL(sys_syslog,sys_syslog,sys32_syslog_wrapper)
115SYSCALL(sys_setitimer,sys_setitimer,compat_sys_setitimer_wrapper) 115SYSCALL(sys_setitimer,sys_setitimer,compat_sys_setitimer)
116SYSCALL(sys_getitimer,sys_getitimer,compat_sys_getitimer_wrapper) /* 105 */ 116SYSCALL(sys_getitimer,sys_getitimer,compat_sys_getitimer) /* 105 */
117SYSCALL(sys_newstat,sys_newstat,compat_sys_newstat_wrapper) 117SYSCALL(sys_newstat,sys_newstat,compat_sys_newstat_wrapper)
118SYSCALL(sys_newlstat,sys_newlstat,compat_sys_newlstat_wrapper) 118SYSCALL(sys_newlstat,sys_newlstat,compat_sys_newlstat_wrapper)
119SYSCALL(sys_newfstat,sys_newfstat,compat_sys_newfstat_wrapper) 119SYSCALL(sys_newfstat,sys_newfstat,compat_sys_newfstat_wrapper)
@@ -122,7 +122,7 @@ SYSCALL(sys_lookup_dcookie,sys_lookup_dcookie,sys32_lookup_dcookie_wrapper) /* 1
122SYSCALL(sys_vhangup,sys_vhangup,sys_vhangup) 122SYSCALL(sys_vhangup,sys_vhangup,sys_vhangup)
123NI_SYSCALL /* old "idle" system call */ 123NI_SYSCALL /* old "idle" system call */
124NI_SYSCALL /* vm86old for i386 */ 124NI_SYSCALL /* vm86old for i386 */
125SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4_wrapper) 125SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4)
126SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */ 126SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */
127SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper) 127SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper)
128SYSCALL(sys_s390_ipc,sys_s390_ipc,sys32_ipc_wrapper) 128SYSCALL(sys_s390_ipc,sys_s390_ipc,sys32_ipc_wrapper)
@@ -134,7 +134,7 @@ SYSCALL(sys_newuname,sys_newuname,sys32_newuname_wrapper)
134NI_SYSCALL /* modify_ldt for i386 */ 134NI_SYSCALL /* modify_ldt for i386 */
135SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper) 135SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper)
136SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */ 136SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */
137SYSCALL(sys_sigprocmask,sys_sigprocmask,compat_sys_sigprocmask_wrapper) 137SYSCALL(sys_sigprocmask,sys_sigprocmask,compat_sys_sigprocmask)
138NI_SYSCALL /* old "create module" */ 138NI_SYSCALL /* old "create module" */
139SYSCALL(sys_init_module,sys_init_module,sys_init_module_wrapper) 139SYSCALL(sys_init_module,sys_init_module,sys_init_module_wrapper)
140SYSCALL(sys_delete_module,sys_delete_module,sys_delete_module_wrapper) 140SYSCALL(sys_delete_module,sys_delete_module,sys_delete_module_wrapper)
@@ -169,7 +169,7 @@ SYSCALL(sys_sched_getscheduler,sys_sched_getscheduler,sys32_sched_getscheduler_w
169SYSCALL(sys_sched_yield,sys_sched_yield,sys_sched_yield) 169SYSCALL(sys_sched_yield,sys_sched_yield,sys_sched_yield)
170SYSCALL(sys_sched_get_priority_max,sys_sched_get_priority_max,sys32_sched_get_priority_max_wrapper) 170SYSCALL(sys_sched_get_priority_max,sys_sched_get_priority_max,sys32_sched_get_priority_max_wrapper)
171SYSCALL(sys_sched_get_priority_min,sys_sched_get_priority_min,sys32_sched_get_priority_min_wrapper) /* 160 */ 171SYSCALL(sys_sched_get_priority_min,sys_sched_get_priority_min,sys32_sched_get_priority_min_wrapper) /* 160 */
172SYSCALL(sys_sched_rr_get_interval,sys_sched_rr_get_interval,sys32_sched_rr_get_interval_wrapper) 172SYSCALL(sys_sched_rr_get_interval,sys_sched_rr_get_interval,compat_sys_sched_rr_get_interval)
173SYSCALL(sys_nanosleep,sys_nanosleep,compat_sys_nanosleep_wrapper) 173SYSCALL(sys_nanosleep,sys_nanosleep,compat_sys_nanosleep_wrapper)
174SYSCALL(sys_mremap,sys_mremap,sys32_mremap_wrapper) 174SYSCALL(sys_mremap,sys_mremap,sys32_mremap_wrapper)
175SYSCALL(sys_setresuid16,sys_ni_syscall,sys32_setresuid16_wrapper) /* old setresuid16 syscall */ 175SYSCALL(sys_setresuid16,sys_ni_syscall,sys32_setresuid16_wrapper) /* old setresuid16 syscall */
@@ -182,19 +182,19 @@ SYSCALL(sys_setresgid16,sys_ni_syscall,sys32_setresgid16_wrapper) /* 170 old set
182SYSCALL(sys_getresgid16,sys_ni_syscall,sys32_getresgid16_wrapper) /* old getresgid16 syscall */ 182SYSCALL(sys_getresgid16,sys_ni_syscall,sys32_getresgid16_wrapper) /* old getresgid16 syscall */
183SYSCALL(sys_prctl,sys_prctl,sys32_prctl_wrapper) 183SYSCALL(sys_prctl,sys_prctl,sys32_prctl_wrapper)
184SYSCALL(sys_rt_sigreturn,sys_rt_sigreturn,sys32_rt_sigreturn) 184SYSCALL(sys_rt_sigreturn,sys_rt_sigreturn,sys32_rt_sigreturn)
185SYSCALL(sys_rt_sigaction,sys_rt_sigaction,sys32_rt_sigaction_wrapper) 185SYSCALL(sys_rt_sigaction,sys_rt_sigaction,compat_sys_rt_sigaction)
186SYSCALL(sys_rt_sigprocmask,sys_rt_sigprocmask,sys32_rt_sigprocmask_wrapper) /* 175 */ 186SYSCALL(sys_rt_sigprocmask,sys_rt_sigprocmask,compat_sys_rt_sigprocmask) /* 175 */
187SYSCALL(sys_rt_sigpending,sys_rt_sigpending,sys32_rt_sigpending_wrapper) 187SYSCALL(sys_rt_sigpending,sys_rt_sigpending,compat_sys_rt_sigpending)
188SYSCALL(sys_rt_sigtimedwait,sys_rt_sigtimedwait,compat_sys_rt_sigtimedwait_wrapper) 188SYSCALL(sys_rt_sigtimedwait,sys_rt_sigtimedwait,compat_sys_rt_sigtimedwait)
189SYSCALL(sys_rt_sigqueueinfo,sys_rt_sigqueueinfo,sys32_rt_sigqueueinfo_wrapper) 189SYSCALL(sys_rt_sigqueueinfo,sys_rt_sigqueueinfo,compat_sys_rt_sigqueueinfo)
190SYSCALL(sys_rt_sigsuspend,sys_rt_sigsuspend,compat_sys_rt_sigsuspend_wrapper) 190SYSCALL(sys_rt_sigsuspend,sys_rt_sigsuspend,compat_sys_rt_sigsuspend)
191SYSCALL(sys_pread64,sys_pread64,sys32_pread64_wrapper) /* 180 */ 191SYSCALL(sys_pread64,sys_pread64,sys32_pread64_wrapper) /* 180 */
192SYSCALL(sys_pwrite64,sys_pwrite64,sys32_pwrite64_wrapper) 192SYSCALL(sys_pwrite64,sys_pwrite64,sys32_pwrite64_wrapper)
193SYSCALL(sys_chown16,sys_ni_syscall,sys32_chown16_wrapper) /* old chown16 syscall */ 193SYSCALL(sys_chown16,sys_ni_syscall,sys32_chown16_wrapper) /* old chown16 syscall */
194SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) 194SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper)
195SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) 195SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper)
196SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ 196SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */
197SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack_wrapper) 197SYSCALL(sys_sigaltstack,sys_sigaltstack,compat_sys_sigaltstack)
198SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) 198SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper)
199NI_SYSCALL /* streams1 */ 199NI_SYSCALL /* streams1 */
200NI_SYSCALL /* streams2 */ 200NI_SYSCALL /* streams2 */
@@ -246,7 +246,7 @@ SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper)
246SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ 246SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */
247SYSCALL(sys_gettid,sys_gettid,sys_gettid) 247SYSCALL(sys_gettid,sys_gettid,sys_gettid)
248SYSCALL(sys_tkill,sys_tkill,sys_tkill_wrapper) 248SYSCALL(sys_tkill,sys_tkill,sys_tkill_wrapper)
249SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper) 249SYSCALL(sys_futex,sys_futex,compat_sys_futex)
250SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) 250SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper)
251SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ 251SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */
252SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper) 252SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper)
@@ -289,14 +289,14 @@ SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper)
289SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) 289SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper)
290SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) 290SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper)
291SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl_wrapper) /* 280 */ 291SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl_wrapper) /* 280 */
292SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid_wrapper) 292SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid)
293SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) 293SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper)
294SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper) 294SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper)
295SYSCALL(sys_inotify_init,sys_inotify_init,sys_inotify_init) 295SYSCALL(sys_inotify_init,sys_inotify_init,sys_inotify_init)
296SYSCALL(sys_inotify_add_watch,sys_inotify_add_watch,sys_inotify_add_watch_wrapper) /* 285 */ 296SYSCALL(sys_inotify_add_watch,sys_inotify_add_watch,sys_inotify_add_watch_wrapper) /* 285 */
297SYSCALL(sys_inotify_rm_watch,sys_inotify_rm_watch,sys_inotify_rm_watch_wrapper) 297SYSCALL(sys_inotify_rm_watch,sys_inotify_rm_watch,sys_inotify_rm_watch_wrapper)
298NI_SYSCALL /* 287 sys_migrate_pages */ 298NI_SYSCALL /* 287 sys_migrate_pages */
299SYSCALL(sys_openat,sys_openat,compat_sys_openat_wrapper) 299SYSCALL(sys_openat,sys_openat,compat_sys_openat)
300SYSCALL(sys_mkdirat,sys_mkdirat,sys_mkdirat_wrapper) 300SYSCALL(sys_mkdirat,sys_mkdirat,sys_mkdirat_wrapper)
301SYSCALL(sys_mknodat,sys_mknodat,sys_mknodat_wrapper) /* 290 */ 301SYSCALL(sys_mknodat,sys_mknodat,sys_mknodat_wrapper) /* 290 */
302SYSCALL(sys_fchownat,sys_fchownat,sys_fchownat_wrapper) 302SYSCALL(sys_fchownat,sys_fchownat,sys_fchownat_wrapper)
@@ -312,8 +312,8 @@ SYSCALL(sys_faccessat,sys_faccessat,sys_faccessat_wrapper) /* 300 */
312SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper) 312SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper)
313SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper) 313SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper)
314SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper) 314SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper)
315SYSCALL(sys_set_robust_list,sys_set_robust_list,compat_sys_set_robust_list_wrapper) 315SYSCALL(sys_set_robust_list,sys_set_robust_list,compat_sys_set_robust_list)
316SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list_wrapper) 316SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list)
317SYSCALL(sys_splice,sys_splice,sys_splice_wrapper) 317SYSCALL(sys_splice,sys_splice,sys_splice_wrapper)
318SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper) 318SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper)
319SYSCALL(sys_tee,sys_tee,sys_tee_wrapper) 319SYSCALL(sys_tee,sys_tee,sys_tee_wrapper)
@@ -328,8 +328,8 @@ SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper)
328NI_SYSCALL /* 317 old sys_timer_fd */ 328NI_SYSCALL /* 317 old sys_timer_fd */
329SYSCALL(sys_eventfd,sys_eventfd,sys_eventfd_wrapper) 329SYSCALL(sys_eventfd,sys_eventfd,sys_eventfd_wrapper)
330SYSCALL(sys_timerfd_create,sys_timerfd_create,sys_timerfd_create_wrapper) 330SYSCALL(sys_timerfd_create,sys_timerfd_create,sys_timerfd_create_wrapper)
331SYSCALL(sys_timerfd_settime,sys_timerfd_settime,compat_sys_timerfd_settime_wrapper) /* 320 */ 331SYSCALL(sys_timerfd_settime,sys_timerfd_settime,compat_sys_timerfd_settime) /* 320 */
332SYSCALL(sys_timerfd_gettime,sys_timerfd_gettime,compat_sys_timerfd_gettime_wrapper) 332SYSCALL(sys_timerfd_gettime,sys_timerfd_gettime,compat_sys_timerfd_gettime)
333SYSCALL(sys_signalfd4,sys_signalfd4,compat_sys_signalfd4_wrapper) 333SYSCALL(sys_signalfd4,sys_signalfd4,compat_sys_signalfd4_wrapper)
334SYSCALL(sys_eventfd2,sys_eventfd2,sys_eventfd2_wrapper) 334SYSCALL(sys_eventfd2,sys_eventfd2,sys_eventfd2_wrapper)
335SYSCALL(sys_inotify_init1,sys_inotify_init1,sys_inotify_init1_wrapper) 335SYSCALL(sys_inotify_init1,sys_inotify_init1,sys_inotify_init1_wrapper)
@@ -338,13 +338,13 @@ SYSCALL(sys_dup3,sys_dup3,sys_dup3_wrapper)
338SYSCALL(sys_epoll_create1,sys_epoll_create1,sys_epoll_create1_wrapper) 338SYSCALL(sys_epoll_create1,sys_epoll_create1,sys_epoll_create1_wrapper)
339SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv_wrapper) 339SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv_wrapper)
340SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper) 340SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper)
341SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo_wrapper) /* 330 */ 341SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */
342SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) 342SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper)
343SYSCALL(sys_fanotify_init,sys_fanotify_init,sys_fanotify_init_wrapper) 343SYSCALL(sys_fanotify_init,sys_fanotify_init,sys_fanotify_init_wrapper)
344SYSCALL(sys_fanotify_mark,sys_fanotify_mark,sys_fanotify_mark_wrapper) 344SYSCALL(sys_fanotify_mark,sys_fanotify_mark,sys_fanotify_mark_wrapper)
345SYSCALL(sys_prlimit64,sys_prlimit64,sys_prlimit64_wrapper) 345SYSCALL(sys_prlimit64,sys_prlimit64,sys_prlimit64_wrapper)
346SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,sys_name_to_handle_at_wrapper) /* 335 */ 346SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,sys_name_to_handle_at_wrapper) /* 335 */
347SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at_wrapper) 347SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at)
348SYSCALL(sys_clock_adjtime,sys_clock_adjtime,compat_sys_clock_adjtime_wrapper) 348SYSCALL(sys_clock_adjtime,sys_clock_adjtime,compat_sys_clock_adjtime_wrapper)
349SYSCALL(sys_syncfs,sys_syncfs,sys_syncfs_wrapper) 349SYSCALL(sys_syncfs,sys_syncfs,sys_syncfs_wrapper)
350SYSCALL(sys_setns,sys_setns,sys_setns_wrapper) 350SYSCALL(sys_setns,sys_setns,sys_setns_wrapper)