Loading arch/s390/Kconfig +2 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,7 @@ config S390 select GENERIC_COMPAT_RT_SIGPROCMASK select GENERIC_COMPAT_RT_SIGPENDING select OLD_SIGSUSPEND3 select OLD_SIGACTION config SCHED_OMIT_FRAME_POINTER def_bool y Loading Loading @@ -255,6 +256,7 @@ config COMPAT depends on 64BIT select COMPAT_BINFMT_ELF if BINFMT_ELF select ARCH_WANT_OLD_COMPAT_IPC select COMPAT_OLD_SIGACTION help Select this option if you want to enable your system kernel to handle system-calls from ELF binaries for 31 bit ESA. This option Loading arch/s390/include/asm/signal.h +0 −7 Original line number Diff line number Diff line Loading @@ -21,12 +21,5 @@ typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t; struct old_sigaction { __sighandler_t sa_handler; old_sigset_t sa_mask; unsigned long sa_flags; void (*sa_restorer)(void); }; #define __ARCH_HAS_SA_RESTORER #endif arch/s390/kernel/compat_linux.h +0 −11 Original line number Diff line number Diff line Loading @@ -17,13 +17,6 @@ struct ipc_kludge_32 { __s32 msgtyp; }; struct old_sigaction32 { __u32 sa_handler; /* Really a pointer, but need to deal with 32 bits */ compat_old_sigset_t sa_mask; /* A 32 bit mask */ __u32 sa_flags; __u32 sa_restorer; /* Another 32 bit pointer */ }; /* asm/sigcontext.h */ typedef union { Loading Loading @@ -81,8 +74,6 @@ struct ucontext32 { struct stat64_emu31; struct mmap_arg_struct_emu31; struct fadvise64_64_args; struct old_sigaction32; struct old_sigaction32; long sys32_chown16(const char __user * filename, u16 user, u16 group); long sys32_lchown16(const char __user * filename, u16 user, u16 group); Loading Loading @@ -131,6 +122,4 @@ long sys32_read(unsigned int fd, char __user * buf, size_t count); long sys32_write(unsigned int fd, const char __user * buf, size_t count); long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise); long sys32_fadvise64_64(struct fadvise64_64_args __user *args); long sys32_sigaction(int sig, const struct old_sigaction32 __user *act, struct old_sigaction32 __user *oact); #endif /* _ASM_S390X_S390_H */ arch/s390/kernel/compat_signal.c +0 −37 Original line number Diff line number Diff line Loading @@ -157,43 +157,6 @@ int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from) return err; } asmlinkage long sys32_sigaction(int sig, const struct old_sigaction32 __user *act, struct old_sigaction32 __user *oact) { struct k_sigaction new_ka, old_ka; unsigned long sa_handler, sa_restorer; int ret; if (act) { compat_old_sigset_t mask; if (!access_ok(VERIFY_READ, act, sizeof(*act)) || __get_user(sa_handler, &act->sa_handler) || __get_user(sa_restorer, &act->sa_restorer) || __get_user(new_ka.sa.sa_flags, &act->sa_flags) || __get_user(mask, &act->sa_mask)) return -EFAULT; new_ka.sa.sa_handler = (__sighandler_t) sa_handler; new_ka.sa.sa_restorer = (void (*)(void)) sa_restorer; siginitset(&new_ka.sa.sa_mask, mask); } ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); if (!ret && oact) { sa_handler = (unsigned long) old_ka.sa.sa_handler; sa_restorer = (unsigned long) old_ka.sa.sa_restorer; if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) || __put_user(sa_handler, &oact->sa_handler) || __put_user(sa_restorer, &oact->sa_restorer) || __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) return -EFAULT; } return ret; } static int save_sigregs32(struct pt_regs *regs, _sigregs32 __user *sregs) { _s390_regs_common32 regs32; Loading arch/s390/kernel/compat_wrapper.S +1 −1 Original line number Diff line number Diff line Loading @@ -230,7 +230,7 @@ ENTRY(sys32_sigaction_wrapper) lgfr %r2,%r2 # int llgtr %r3,%r3 # const struct old_sigaction * llgtr %r4,%r4 # struct old_sigaction32 * jg sys32_sigaction # branch to system call jg compat_sys_sigaction # branch to system call ENTRY(sys32_setreuid16_wrapper) llgfr %r2,%r2 # __kernel_old_uid_emu31_t Loading Loading
arch/s390/Kconfig +2 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,7 @@ config S390 select GENERIC_COMPAT_RT_SIGPROCMASK select GENERIC_COMPAT_RT_SIGPENDING select OLD_SIGSUSPEND3 select OLD_SIGACTION config SCHED_OMIT_FRAME_POINTER def_bool y Loading Loading @@ -255,6 +256,7 @@ config COMPAT depends on 64BIT select COMPAT_BINFMT_ELF if BINFMT_ELF select ARCH_WANT_OLD_COMPAT_IPC select COMPAT_OLD_SIGACTION help Select this option if you want to enable your system kernel to handle system-calls from ELF binaries for 31 bit ESA. This option Loading
arch/s390/include/asm/signal.h +0 −7 Original line number Diff line number Diff line Loading @@ -21,12 +21,5 @@ typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t; struct old_sigaction { __sighandler_t sa_handler; old_sigset_t sa_mask; unsigned long sa_flags; void (*sa_restorer)(void); }; #define __ARCH_HAS_SA_RESTORER #endif
arch/s390/kernel/compat_linux.h +0 −11 Original line number Diff line number Diff line Loading @@ -17,13 +17,6 @@ struct ipc_kludge_32 { __s32 msgtyp; }; struct old_sigaction32 { __u32 sa_handler; /* Really a pointer, but need to deal with 32 bits */ compat_old_sigset_t sa_mask; /* A 32 bit mask */ __u32 sa_flags; __u32 sa_restorer; /* Another 32 bit pointer */ }; /* asm/sigcontext.h */ typedef union { Loading Loading @@ -81,8 +74,6 @@ struct ucontext32 { struct stat64_emu31; struct mmap_arg_struct_emu31; struct fadvise64_64_args; struct old_sigaction32; struct old_sigaction32; long sys32_chown16(const char __user * filename, u16 user, u16 group); long sys32_lchown16(const char __user * filename, u16 user, u16 group); Loading Loading @@ -131,6 +122,4 @@ long sys32_read(unsigned int fd, char __user * buf, size_t count); long sys32_write(unsigned int fd, const char __user * buf, size_t count); long sys32_fadvise64(int fd, loff_t offset, size_t len, int advise); long sys32_fadvise64_64(struct fadvise64_64_args __user *args); long sys32_sigaction(int sig, const struct old_sigaction32 __user *act, struct old_sigaction32 __user *oact); #endif /* _ASM_S390X_S390_H */
arch/s390/kernel/compat_signal.c +0 −37 Original line number Diff line number Diff line Loading @@ -157,43 +157,6 @@ int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from) return err; } asmlinkage long sys32_sigaction(int sig, const struct old_sigaction32 __user *act, struct old_sigaction32 __user *oact) { struct k_sigaction new_ka, old_ka; unsigned long sa_handler, sa_restorer; int ret; if (act) { compat_old_sigset_t mask; if (!access_ok(VERIFY_READ, act, sizeof(*act)) || __get_user(sa_handler, &act->sa_handler) || __get_user(sa_restorer, &act->sa_restorer) || __get_user(new_ka.sa.sa_flags, &act->sa_flags) || __get_user(mask, &act->sa_mask)) return -EFAULT; new_ka.sa.sa_handler = (__sighandler_t) sa_handler; new_ka.sa.sa_restorer = (void (*)(void)) sa_restorer; siginitset(&new_ka.sa.sa_mask, mask); } ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); if (!ret && oact) { sa_handler = (unsigned long) old_ka.sa.sa_handler; sa_restorer = (unsigned long) old_ka.sa.sa_restorer; if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) || __put_user(sa_handler, &oact->sa_handler) || __put_user(sa_restorer, &oact->sa_restorer) || __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) return -EFAULT; } return ret; } static int save_sigregs32(struct pt_regs *regs, _sigregs32 __user *sregs) { _s390_regs_common32 regs32; Loading
arch/s390/kernel/compat_wrapper.S +1 −1 Original line number Diff line number Diff line Loading @@ -230,7 +230,7 @@ ENTRY(sys32_sigaction_wrapper) lgfr %r2,%r2 # int llgtr %r3,%r3 # const struct old_sigaction * llgtr %r4,%r4 # struct old_sigaction32 * jg sys32_sigaction # branch to system call jg compat_sys_sigaction # branch to system call ENTRY(sys32_setreuid16_wrapper) llgfr %r2,%r2 # __kernel_old_uid_emu31_t Loading