diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-23 21:50:11 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-23 21:50:11 -0500 |
commit | 9e2d59ad580d590134285f361a0e80f0e98c0207 (patch) | |
tree | f3232be75781484193413f32ec82c21f6d8eb76e /arch/s390 | |
parent | 5ce1a70e2f00f0bce0cab57f798ca354b9496169 (diff) | |
parent | 235b80226b986dabcbba844968f7807866bd0bfe (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/Kconfig | 3 | ||||
-rw-r--r-- | arch/s390/include/asm/signal.h | 19 | ||||
-rw-r--r-- | arch/s390/include/asm/unistd.h | 3 | ||||
-rw-r--r-- | arch/s390/kernel/compat_linux.c | 80 | ||||
-rw-r--r-- | arch/s390/kernel/compat_linux.h | 34 | ||||
-rw-r--r-- | arch/s390/kernel/compat_signal.c | 134 | ||||
-rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 144 | ||||
-rw-r--r-- | arch/s390/kernel/entry.h | 4 | ||||
-rw-r--r-- | arch/s390/kernel/signal.c | 56 | ||||
-rw-r--r-- | arch/s390/kernel/syscalls.S | 46 |
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 | ||
24 | struct 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 | |||
31 | struct 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 | |||
38 | struct 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 | ||
355 | asmlinkage 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 | |||
371 | asmlinkage 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 | |||
400 | asmlinkage 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 | |||
420 | asmlinkage long | ||
421 | sys32_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 | |||
435 | asmlinkage long sys32_pread64(unsigned int fd, char __user *ubuf, | 355 | asmlinkage 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 | ||
20 | struct 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 */ |
28 | typedef union | 21 | typedef union |
29 | { | 22 | { |
@@ -68,24 +61,12 @@ struct sigcontext32 | |||
68 | }; | 61 | }; |
69 | 62 | ||
70 | /* asm/signal.h */ | 63 | /* asm/signal.h */ |
71 | struct 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 | |||
78 | typedef 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 */ |
85 | struct ucontext32 { | 66 | struct 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 { | |||
93 | struct stat64_emu31; | 74 | struct stat64_emu31; |
94 | struct mmap_arg_struct_emu31; | 75 | struct mmap_arg_struct_emu31; |
95 | struct fadvise64_64_args; | 76 | struct fadvise64_64_args; |
96 | struct old_sigaction32; | ||
97 | struct old_sigaction32; | ||
98 | 77 | ||
99 | long sys32_chown16(const char __user * filename, u16 user, u16 group); | 78 | long sys32_chown16(const char __user * filename, u16 user, u16 group); |
100 | long sys32_lchown16(const char __user * filename, u16 user, u16 group); | 79 | long 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); | |||
119 | long sys32_truncate64(const char __user * path, unsigned long high, | 98 | long sys32_truncate64(const char __user * path, unsigned long high, |
120 | unsigned long low); | 99 | unsigned long low); |
121 | long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low); | 100 | long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low); |
122 | long sys32_sched_rr_get_interval(compat_pid_t pid, | ||
123 | struct compat_timespec __user *interval); | ||
124 | long sys32_rt_sigprocmask(int how, compat_sigset_t __user *set, | ||
125 | compat_sigset_t __user *oset, size_t sigsetsize); | ||
126 | long sys32_rt_sigpending(compat_sigset_t __user *set, size_t sigsetsize); | ||
127 | long sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo); | ||
128 | long sys32_init_module(void __user *umod, unsigned long len, | 101 | long sys32_init_module(void __user *umod, unsigned long len, |
129 | const char __user *uargs); | 102 | const char __user *uargs); |
130 | long sys32_delete_module(const char __user *name_user, unsigned int flags); | 103 | long 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); | |||
149 | long sys32_write(unsigned int fd, const char __user * buf, size_t count); | 122 | long sys32_write(unsigned int fd, const char __user * buf, size_t count); |
150 | long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise); | 123 | long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise); |
151 | long sys32_fadvise64_64(struct fadvise64_64_args __user *args); | 124 | long sys32_fadvise64_64(struct fadvise64_64_args __user *args); |
152 | long sys32_sigaction(int sig, const struct old_sigaction32 __user *act, | ||
153 | struct old_sigaction32 __user *oact); | ||
154 | long sys32_rt_sigaction(int sig, const struct sigaction32 __user *act, | ||
155 | struct sigaction32 __user *oact, size_t sigsetsize); | ||
156 | long 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 | ||
160 | asmlinkage long | ||
161 | sys32_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 | |||
197 | asmlinkage long | ||
198 | sys32_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 | |||
237 | asmlinkage long | ||
238 | sys32_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 | |||
276 | static int save_sigregs32(struct pt_regs *regs, _sigregs32 __user *sregs) | 160 | static 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]; |
407 | badframe: | 280 | badframe: |
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 | ||
27 | ENTRY(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 | |||
33 | ENTRY(sys32_close_wrapper) | 27 | ENTRY(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 | ||
229 | ENTRY(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 | |||
235 | ENTRY(sys32_setreuid16_wrapper) | 223 | ENTRY(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 | ||
399 | ENTRY(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 | |||
405 | ENTRY(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 | |||
410 | ENTRY(compat_sys_newstat_wrapper) | 387 | ENTRY(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 | ||
427 | ENTRY(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 | |||
434 | ENTRY(sys32_swapoff_wrapper) | 404 | ENTRY(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 | ||
477 | ENTRY(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 | |||
483 | ENTRY(sys_init_module_wrapper) | 447 | ENTRY(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 | ||
631 | ENTRY(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 | |||
636 | ENTRY(compat_sys_nanosleep_wrapper) | 595 | ENTRY(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 | ||
689 | ENTRY(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 | |||
696 | ENTRY(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 | |||
703 | ENTRY(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 | |||
708 | ENTRY(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 | |||
715 | ENTRY(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 | |||
721 | ENTRY(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 | |||
726 | ENTRY(sys32_pread64_wrapper) | 648 | ENTRY(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 | ||
763 | ENTRY(sys32_sigaltstack_wrapper) | ||
764 | llgtr %r2,%r2 # const stack_emu31_t * | ||
765 | llgtr %r3,%r3 # stack_emu31_t * | ||
766 | jg sys32_sigaltstack | ||
767 | |||
768 | ENTRY(sys32_sendfile_wrapper) | 685 | ENTRY(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 | ||
924 | ENTRY(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 | |||
934 | ENTRY(sys32_setxattr_wrapper) | 841 | ENTRY(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 | ||
1219 | ENTRY(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 | |||
1227 | ENTRY(compat_sys_kexec_load_wrapper) | 1126 | ENTRY(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 | ||
1256 | ENTRY(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 | |||
1263 | ENTRY(sys_mkdirat_wrapper) | 1155 | ENTRY(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 | ||
1365 | ENTRY(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 | |||
1370 | ENTRY(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 | |||
1376 | ENTRY(sys_splice_wrapper) | 1257 | ENTRY(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 | ||
1461 | ENTRY(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 | |||
1468 | ENTRY(compat_sys_timerfd_gettime_wrapper) | ||
1469 | lgfr %r2,%r2 # int | ||
1470 | llgtr %r3,%r3 # struct compat_itimerspec * | ||
1471 | jg compat_sys_timerfd_gettime | ||
1472 | |||
1473 | ENTRY(compat_sys_signalfd4_wrapper) | 1342 | ENTRY(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 | ||
1553 | ENTRY(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 | |||
1560 | ENTRY(sys_perf_event_open_wrapper) | 1422 | ENTRY(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 | ||
1610 | ENTRY(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 | |||
1616 | ENTRY(compat_sys_clock_adjtime_wrapper) | 1472 | ENTRY(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, | |||
73 | long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args); | 73 | long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args); |
74 | long sys_s390_fallocate(int fd, int mode, loff_t offset, u32 len_high, | 74 | long sys_s390_fallocate(int fd, int mode, loff_t offset, u32 len_high, |
75 | u32 len_low); | 75 | u32 len_low); |
76 | long sys_sigsuspend(int history0, int history1, old_sigset_t mask); | ||
77 | long sys_sigaction(int sig, const struct old_sigaction __user *act, | ||
78 | struct old_sigaction __user *oact); | ||
79 | long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss); | ||
80 | long sys_sigreturn(void); | 76 | long sys_sigreturn(void); |
81 | long sys_rt_sigreturn(void); | 77 | long sys_rt_sigreturn(void); |
82 | long sys32_sigreturn(void); | 78 | long 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 | */ | ||
54 | SYSCALL_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 | |||
61 | SYSCALL_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 | |||
92 | SYSCALL_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. */ |
100 | static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs) | 52 | static 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]; |
197 | badframe: | 148 | badframe: |
@@ -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) | |||
13 | SYSCALL(sys_fork,sys_fork,sys_fork) | 13 | SYSCALL(sys_fork,sys_fork,sys_fork) |
14 | SYSCALL(sys_read,sys_read,sys32_read_wrapper) | 14 | SYSCALL(sys_read,sys_read,sys32_read_wrapper) |
15 | SYSCALL(sys_write,sys_write,sys32_write_wrapper) | 15 | SYSCALL(sys_write,sys_write,sys32_write_wrapper) |
16 | SYSCALL(sys_open,sys_open,sys32_open_wrapper) /* 5 */ | 16 | SYSCALL(sys_open,sys_open,compat_sys_open) /* 5 */ |
17 | SYSCALL(sys_close,sys_close,sys32_close_wrapper) | 17 | SYSCALL(sys_close,sys_close,sys32_close_wrapper) |
18 | SYSCALL(sys_restart_syscall,sys_restart_syscall,sys_restart_syscall) | 18 | SYSCALL(sys_restart_syscall,sys_restart_syscall,sys_restart_syscall) |
19 | SYSCALL(sys_creat,sys_creat,sys32_creat_wrapper) | 19 | SYSCALL(sys_creat,sys_creat,sys32_creat_wrapper) |
@@ -75,7 +75,7 @@ SYSCALL(sys_dup2,sys_dup2,sys32_dup2_wrapper) | |||
75 | SYSCALL(sys_getppid,sys_getppid,sys_getppid) | 75 | SYSCALL(sys_getppid,sys_getppid,sys_getppid) |
76 | SYSCALL(sys_getpgrp,sys_getpgrp,sys_getpgrp) /* 65 */ | 76 | SYSCALL(sys_getpgrp,sys_getpgrp,sys_getpgrp) /* 65 */ |
77 | SYSCALL(sys_setsid,sys_setsid,sys_setsid) | 77 | SYSCALL(sys_setsid,sys_setsid,sys_setsid) |
78 | SYSCALL(sys_sigaction,sys_sigaction,sys32_sigaction_wrapper) | 78 | SYSCALL(sys_sigaction,sys_sigaction,compat_sys_sigaction) |
79 | NI_SYSCALL /* old sgetmask syscall*/ | 79 | NI_SYSCALL /* old sgetmask syscall*/ |
80 | NI_SYSCALL /* old ssetmask syscall*/ | 80 | NI_SYSCALL /* old ssetmask syscall*/ |
81 | SYSCALL(sys_setreuid16,sys_ni_syscall,sys32_setreuid16_wrapper) /* old setreuid16 syscall */ | 81 | SYSCALL(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 */ | |||
112 | NI_SYSCALL /* ioperm for i386 */ | 112 | NI_SYSCALL /* ioperm for i386 */ |
113 | SYSCALL(sys_socketcall,sys_socketcall,compat_sys_socketcall_wrapper) | 113 | SYSCALL(sys_socketcall,sys_socketcall,compat_sys_socketcall_wrapper) |
114 | SYSCALL(sys_syslog,sys_syslog,sys32_syslog_wrapper) | 114 | SYSCALL(sys_syslog,sys_syslog,sys32_syslog_wrapper) |
115 | SYSCALL(sys_setitimer,sys_setitimer,compat_sys_setitimer_wrapper) | 115 | SYSCALL(sys_setitimer,sys_setitimer,compat_sys_setitimer) |
116 | SYSCALL(sys_getitimer,sys_getitimer,compat_sys_getitimer_wrapper) /* 105 */ | 116 | SYSCALL(sys_getitimer,sys_getitimer,compat_sys_getitimer) /* 105 */ |
117 | SYSCALL(sys_newstat,sys_newstat,compat_sys_newstat_wrapper) | 117 | SYSCALL(sys_newstat,sys_newstat,compat_sys_newstat_wrapper) |
118 | SYSCALL(sys_newlstat,sys_newlstat,compat_sys_newlstat_wrapper) | 118 | SYSCALL(sys_newlstat,sys_newlstat,compat_sys_newlstat_wrapper) |
119 | SYSCALL(sys_newfstat,sys_newfstat,compat_sys_newfstat_wrapper) | 119 | SYSCALL(sys_newfstat,sys_newfstat,compat_sys_newfstat_wrapper) |
@@ -122,7 +122,7 @@ SYSCALL(sys_lookup_dcookie,sys_lookup_dcookie,sys32_lookup_dcookie_wrapper) /* 1 | |||
122 | SYSCALL(sys_vhangup,sys_vhangup,sys_vhangup) | 122 | SYSCALL(sys_vhangup,sys_vhangup,sys_vhangup) |
123 | NI_SYSCALL /* old "idle" system call */ | 123 | NI_SYSCALL /* old "idle" system call */ |
124 | NI_SYSCALL /* vm86old for i386 */ | 124 | NI_SYSCALL /* vm86old for i386 */ |
125 | SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4_wrapper) | 125 | SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4) |
126 | SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */ | 126 | SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */ |
127 | SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper) | 127 | SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper) |
128 | SYSCALL(sys_s390_ipc,sys_s390_ipc,sys32_ipc_wrapper) | 128 | SYSCALL(sys_s390_ipc,sys_s390_ipc,sys32_ipc_wrapper) |
@@ -134,7 +134,7 @@ SYSCALL(sys_newuname,sys_newuname,sys32_newuname_wrapper) | |||
134 | NI_SYSCALL /* modify_ldt for i386 */ | 134 | NI_SYSCALL /* modify_ldt for i386 */ |
135 | SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper) | 135 | SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper) |
136 | SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */ | 136 | SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */ |
137 | SYSCALL(sys_sigprocmask,sys_sigprocmask,compat_sys_sigprocmask_wrapper) | 137 | SYSCALL(sys_sigprocmask,sys_sigprocmask,compat_sys_sigprocmask) |
138 | NI_SYSCALL /* old "create module" */ | 138 | NI_SYSCALL /* old "create module" */ |
139 | SYSCALL(sys_init_module,sys_init_module,sys_init_module_wrapper) | 139 | SYSCALL(sys_init_module,sys_init_module,sys_init_module_wrapper) |
140 | SYSCALL(sys_delete_module,sys_delete_module,sys_delete_module_wrapper) | 140 | SYSCALL(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 | |||
169 | SYSCALL(sys_sched_yield,sys_sched_yield,sys_sched_yield) | 169 | SYSCALL(sys_sched_yield,sys_sched_yield,sys_sched_yield) |
170 | SYSCALL(sys_sched_get_priority_max,sys_sched_get_priority_max,sys32_sched_get_priority_max_wrapper) | 170 | SYSCALL(sys_sched_get_priority_max,sys_sched_get_priority_max,sys32_sched_get_priority_max_wrapper) |
171 | SYSCALL(sys_sched_get_priority_min,sys_sched_get_priority_min,sys32_sched_get_priority_min_wrapper) /* 160 */ | 171 | SYSCALL(sys_sched_get_priority_min,sys_sched_get_priority_min,sys32_sched_get_priority_min_wrapper) /* 160 */ |
172 | SYSCALL(sys_sched_rr_get_interval,sys_sched_rr_get_interval,sys32_sched_rr_get_interval_wrapper) | 172 | SYSCALL(sys_sched_rr_get_interval,sys_sched_rr_get_interval,compat_sys_sched_rr_get_interval) |
173 | SYSCALL(sys_nanosleep,sys_nanosleep,compat_sys_nanosleep_wrapper) | 173 | SYSCALL(sys_nanosleep,sys_nanosleep,compat_sys_nanosleep_wrapper) |
174 | SYSCALL(sys_mremap,sys_mremap,sys32_mremap_wrapper) | 174 | SYSCALL(sys_mremap,sys_mremap,sys32_mremap_wrapper) |
175 | SYSCALL(sys_setresuid16,sys_ni_syscall,sys32_setresuid16_wrapper) /* old setresuid16 syscall */ | 175 | SYSCALL(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 | |||
182 | SYSCALL(sys_getresgid16,sys_ni_syscall,sys32_getresgid16_wrapper) /* old getresgid16 syscall */ | 182 | SYSCALL(sys_getresgid16,sys_ni_syscall,sys32_getresgid16_wrapper) /* old getresgid16 syscall */ |
183 | SYSCALL(sys_prctl,sys_prctl,sys32_prctl_wrapper) | 183 | SYSCALL(sys_prctl,sys_prctl,sys32_prctl_wrapper) |
184 | SYSCALL(sys_rt_sigreturn,sys_rt_sigreturn,sys32_rt_sigreturn) | 184 | SYSCALL(sys_rt_sigreturn,sys_rt_sigreturn,sys32_rt_sigreturn) |
185 | SYSCALL(sys_rt_sigaction,sys_rt_sigaction,sys32_rt_sigaction_wrapper) | 185 | SYSCALL(sys_rt_sigaction,sys_rt_sigaction,compat_sys_rt_sigaction) |
186 | SYSCALL(sys_rt_sigprocmask,sys_rt_sigprocmask,sys32_rt_sigprocmask_wrapper) /* 175 */ | 186 | SYSCALL(sys_rt_sigprocmask,sys_rt_sigprocmask,compat_sys_rt_sigprocmask) /* 175 */ |
187 | SYSCALL(sys_rt_sigpending,sys_rt_sigpending,sys32_rt_sigpending_wrapper) | 187 | SYSCALL(sys_rt_sigpending,sys_rt_sigpending,compat_sys_rt_sigpending) |
188 | SYSCALL(sys_rt_sigtimedwait,sys_rt_sigtimedwait,compat_sys_rt_sigtimedwait_wrapper) | 188 | SYSCALL(sys_rt_sigtimedwait,sys_rt_sigtimedwait,compat_sys_rt_sigtimedwait) |
189 | SYSCALL(sys_rt_sigqueueinfo,sys_rt_sigqueueinfo,sys32_rt_sigqueueinfo_wrapper) | 189 | SYSCALL(sys_rt_sigqueueinfo,sys_rt_sigqueueinfo,compat_sys_rt_sigqueueinfo) |
190 | SYSCALL(sys_rt_sigsuspend,sys_rt_sigsuspend,compat_sys_rt_sigsuspend_wrapper) | 190 | SYSCALL(sys_rt_sigsuspend,sys_rt_sigsuspend,compat_sys_rt_sigsuspend) |
191 | SYSCALL(sys_pread64,sys_pread64,sys32_pread64_wrapper) /* 180 */ | 191 | SYSCALL(sys_pread64,sys_pread64,sys32_pread64_wrapper) /* 180 */ |
192 | SYSCALL(sys_pwrite64,sys_pwrite64,sys32_pwrite64_wrapper) | 192 | SYSCALL(sys_pwrite64,sys_pwrite64,sys32_pwrite64_wrapper) |
193 | SYSCALL(sys_chown16,sys_ni_syscall,sys32_chown16_wrapper) /* old chown16 syscall */ | 193 | SYSCALL(sys_chown16,sys_ni_syscall,sys32_chown16_wrapper) /* old chown16 syscall */ |
194 | SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) | 194 | SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) |
195 | SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) | 195 | SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) |
196 | SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ | 196 | SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ |
197 | SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack_wrapper) | 197 | SYSCALL(sys_sigaltstack,sys_sigaltstack,compat_sys_sigaltstack) |
198 | SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) | 198 | SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) |
199 | NI_SYSCALL /* streams1 */ | 199 | NI_SYSCALL /* streams1 */ |
200 | NI_SYSCALL /* streams2 */ | 200 | NI_SYSCALL /* streams2 */ |
@@ -246,7 +246,7 @@ SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper) | |||
246 | SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ | 246 | SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ |
247 | SYSCALL(sys_gettid,sys_gettid,sys_gettid) | 247 | SYSCALL(sys_gettid,sys_gettid,sys_gettid) |
248 | SYSCALL(sys_tkill,sys_tkill,sys_tkill_wrapper) | 248 | SYSCALL(sys_tkill,sys_tkill,sys_tkill_wrapper) |
249 | SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper) | 249 | SYSCALL(sys_futex,sys_futex,compat_sys_futex) |
250 | SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) | 250 | SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) |
251 | SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ | 251 | SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ |
252 | SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper) | 252 | SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper) |
@@ -289,14 +289,14 @@ SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper) | |||
289 | SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) | 289 | SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) |
290 | SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) | 290 | SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) |
291 | SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl_wrapper) /* 280 */ | 291 | SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl_wrapper) /* 280 */ |
292 | SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid_wrapper) | 292 | SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid) |
293 | SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) | 293 | SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) |
294 | SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper) | 294 | SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper) |
295 | SYSCALL(sys_inotify_init,sys_inotify_init,sys_inotify_init) | 295 | SYSCALL(sys_inotify_init,sys_inotify_init,sys_inotify_init) |
296 | SYSCALL(sys_inotify_add_watch,sys_inotify_add_watch,sys_inotify_add_watch_wrapper) /* 285 */ | 296 | SYSCALL(sys_inotify_add_watch,sys_inotify_add_watch,sys_inotify_add_watch_wrapper) /* 285 */ |
297 | SYSCALL(sys_inotify_rm_watch,sys_inotify_rm_watch,sys_inotify_rm_watch_wrapper) | 297 | SYSCALL(sys_inotify_rm_watch,sys_inotify_rm_watch,sys_inotify_rm_watch_wrapper) |
298 | NI_SYSCALL /* 287 sys_migrate_pages */ | 298 | NI_SYSCALL /* 287 sys_migrate_pages */ |
299 | SYSCALL(sys_openat,sys_openat,compat_sys_openat_wrapper) | 299 | SYSCALL(sys_openat,sys_openat,compat_sys_openat) |
300 | SYSCALL(sys_mkdirat,sys_mkdirat,sys_mkdirat_wrapper) | 300 | SYSCALL(sys_mkdirat,sys_mkdirat,sys_mkdirat_wrapper) |
301 | SYSCALL(sys_mknodat,sys_mknodat,sys_mknodat_wrapper) /* 290 */ | 301 | SYSCALL(sys_mknodat,sys_mknodat,sys_mknodat_wrapper) /* 290 */ |
302 | SYSCALL(sys_fchownat,sys_fchownat,sys_fchownat_wrapper) | 302 | SYSCALL(sys_fchownat,sys_fchownat,sys_fchownat_wrapper) |
@@ -312,8 +312,8 @@ SYSCALL(sys_faccessat,sys_faccessat,sys_faccessat_wrapper) /* 300 */ | |||
312 | SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper) | 312 | SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper) |
313 | SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper) | 313 | SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper) |
314 | SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper) | 314 | SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper) |
315 | SYSCALL(sys_set_robust_list,sys_set_robust_list,compat_sys_set_robust_list_wrapper) | 315 | SYSCALL(sys_set_robust_list,sys_set_robust_list,compat_sys_set_robust_list) |
316 | SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list_wrapper) | 316 | SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list) |
317 | SYSCALL(sys_splice,sys_splice,sys_splice_wrapper) | 317 | SYSCALL(sys_splice,sys_splice,sys_splice_wrapper) |
318 | SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper) | 318 | SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper) |
319 | SYSCALL(sys_tee,sys_tee,sys_tee_wrapper) | 319 | SYSCALL(sys_tee,sys_tee,sys_tee_wrapper) |
@@ -328,8 +328,8 @@ SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper) | |||
328 | NI_SYSCALL /* 317 old sys_timer_fd */ | 328 | NI_SYSCALL /* 317 old sys_timer_fd */ |
329 | SYSCALL(sys_eventfd,sys_eventfd,sys_eventfd_wrapper) | 329 | SYSCALL(sys_eventfd,sys_eventfd,sys_eventfd_wrapper) |
330 | SYSCALL(sys_timerfd_create,sys_timerfd_create,sys_timerfd_create_wrapper) | 330 | SYSCALL(sys_timerfd_create,sys_timerfd_create,sys_timerfd_create_wrapper) |
331 | SYSCALL(sys_timerfd_settime,sys_timerfd_settime,compat_sys_timerfd_settime_wrapper) /* 320 */ | 331 | SYSCALL(sys_timerfd_settime,sys_timerfd_settime,compat_sys_timerfd_settime) /* 320 */ |
332 | SYSCALL(sys_timerfd_gettime,sys_timerfd_gettime,compat_sys_timerfd_gettime_wrapper) | 332 | SYSCALL(sys_timerfd_gettime,sys_timerfd_gettime,compat_sys_timerfd_gettime) |
333 | SYSCALL(sys_signalfd4,sys_signalfd4,compat_sys_signalfd4_wrapper) | 333 | SYSCALL(sys_signalfd4,sys_signalfd4,compat_sys_signalfd4_wrapper) |
334 | SYSCALL(sys_eventfd2,sys_eventfd2,sys_eventfd2_wrapper) | 334 | SYSCALL(sys_eventfd2,sys_eventfd2,sys_eventfd2_wrapper) |
335 | SYSCALL(sys_inotify_init1,sys_inotify_init1,sys_inotify_init1_wrapper) | 335 | SYSCALL(sys_inotify_init1,sys_inotify_init1,sys_inotify_init1_wrapper) |
@@ -338,13 +338,13 @@ SYSCALL(sys_dup3,sys_dup3,sys_dup3_wrapper) | |||
338 | SYSCALL(sys_epoll_create1,sys_epoll_create1,sys_epoll_create1_wrapper) | 338 | SYSCALL(sys_epoll_create1,sys_epoll_create1,sys_epoll_create1_wrapper) |
339 | SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv_wrapper) | 339 | SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv_wrapper) |
340 | SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper) | 340 | SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper) |
341 | SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo_wrapper) /* 330 */ | 341 | SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */ |
342 | SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) | 342 | SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) |
343 | SYSCALL(sys_fanotify_init,sys_fanotify_init,sys_fanotify_init_wrapper) | 343 | SYSCALL(sys_fanotify_init,sys_fanotify_init,sys_fanotify_init_wrapper) |
344 | SYSCALL(sys_fanotify_mark,sys_fanotify_mark,sys_fanotify_mark_wrapper) | 344 | SYSCALL(sys_fanotify_mark,sys_fanotify_mark,sys_fanotify_mark_wrapper) |
345 | SYSCALL(sys_prlimit64,sys_prlimit64,sys_prlimit64_wrapper) | 345 | SYSCALL(sys_prlimit64,sys_prlimit64,sys_prlimit64_wrapper) |
346 | SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,sys_name_to_handle_at_wrapper) /* 335 */ | 346 | SYSCALL(sys_name_to_handle_at,sys_name_to_handle_at,sys_name_to_handle_at_wrapper) /* 335 */ |
347 | SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at_wrapper) | 347 | SYSCALL(sys_open_by_handle_at,sys_open_by_handle_at,compat_sys_open_by_handle_at) |
348 | SYSCALL(sys_clock_adjtime,sys_clock_adjtime,compat_sys_clock_adjtime_wrapper) | 348 | SYSCALL(sys_clock_adjtime,sys_clock_adjtime,compat_sys_clock_adjtime_wrapper) |
349 | SYSCALL(sys_syncfs,sys_syncfs,sys_syncfs_wrapper) | 349 | SYSCALL(sys_syncfs,sys_syncfs,sys_syncfs_wrapper) |
350 | SYSCALL(sys_setns,sys_setns,sys_setns_wrapper) | 350 | SYSCALL(sys_setns,sys_setns,sys_setns_wrapper) |