Loading arch/mips/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ config MIPS select MODULES_USE_ELF_REL if MODULES select MODULES_USE_ELF_RELA if MODULES && 64BIT select GENERIC_SIGALTSTACK select GENERIC_COMPAT_RT_SIGACTION select GENERIC_COMPAT_RT_SIGQUEUEINFO select GENERIC_COMPAT_RT_SIGPROCMASK select GENERIC_COMPAT_RT_SIGPENDING Loading arch/mips/kernel/scall64-n32.S +1 −1 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ EXPORT(sysn32_call_table) PTR sys_mprotect /* 6010 */ PTR sys_munmap PTR sys_brk PTR sys_32_rt_sigaction PTR compat_sys_rt_sigaction PTR compat_sys_rt_sigprocmask PTR compat_sys_ioctl /* 6015 */ PTR sys_pread64 Loading arch/mips/kernel/scall64-o32.S +1 −1 Original line number Diff line number Diff line Loading @@ -386,7 +386,7 @@ sys_call_table: PTR sys_getresgid PTR sys_prctl PTR sys32_rt_sigreturn PTR sys_32_rt_sigaction PTR compat_sys_rt_sigaction PTR compat_sys_rt_sigprocmask /* 4195 */ PTR compat_sys_rt_sigpending PTR compat_sys_rt_sigtimedwait Loading arch/mips/kernel/signal32.c +2 −52 Original line number Diff line number Diff line Loading @@ -55,12 +55,6 @@ extern asmlinkage int fpu_emulator_restore_context32(struct sigcontext32 __user typedef unsigned int __sighandler32_t; typedef void (*vfptr_t)(void); struct sigaction32 { unsigned int sa_flags; __sighandler32_t sa_handler; compat_sigset_t sa_mask; }; struct ucontext32 { u32 uc_flags; s32 uc_link; Loading Loading @@ -278,8 +272,8 @@ asmlinkage int sys32_sigsuspend(compat_sigset_t __user *uset) return compat_sys_rt_sigsuspend(uset, sizeof(compat_sigset_t)); } SYSCALL_DEFINE3(32_sigaction, long, sig, const struct sigaction32 __user *, act, struct sigaction32 __user *, oact) SYSCALL_DEFINE3(32_sigaction, long, sig, const struct compat_sigaction __user *, act, struct compat_sigaction __user *, oact) { struct k_sigaction new_ka, old_ka; int ret; Loading Loading @@ -564,50 +558,6 @@ struct mips_abi mips_abi_32 = { .restart = __NR_O32_restart_syscall }; SYSCALL_DEFINE4(32_rt_sigaction, int, sig, const struct sigaction32 __user *, act, struct sigaction32 __user *, oact, unsigned int, sigsetsize) { struct k_sigaction new_sa, old_sa; int ret = -EINVAL; /* XXX: Don't preclude handling different sized sigset_t's. */ if (sigsetsize != sizeof(sigset_t)) goto out; if (act) { s32 handler; int err = 0; if (!access_ok(VERIFY_READ, act, sizeof(*act))) return -EFAULT; err |= __get_user(handler, &act->sa_handler); new_sa.sa.sa_handler = (void __user *)(s64)handler; err |= __get_user(new_sa.sa.sa_flags, &act->sa_flags); err |= get_sigset(&new_sa.sa.sa_mask, &act->sa_mask); if (err) return -EFAULT; } ret = do_sigaction(sig, act ? &new_sa : NULL, oact ? &old_sa : NULL); if (!ret && oact) { int err = 0; if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact))) return -EFAULT; err |= __put_user((u32)(u64)old_sa.sa.sa_handler, &oact->sa_handler); err |= __put_user(old_sa.sa.sa_flags, &oact->sa_flags); err |= put_sigset(&old_sa.sa.sa_mask, &oact->sa_mask); if (err) return -EFAULT; } out: return ret; } static int signal32_init(void) { if (cpu_has_fpu) { Loading Loading
arch/mips/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ config MIPS select MODULES_USE_ELF_REL if MODULES select MODULES_USE_ELF_RELA if MODULES && 64BIT select GENERIC_SIGALTSTACK select GENERIC_COMPAT_RT_SIGACTION select GENERIC_COMPAT_RT_SIGQUEUEINFO select GENERIC_COMPAT_RT_SIGPROCMASK select GENERIC_COMPAT_RT_SIGPENDING Loading
arch/mips/kernel/scall64-n32.S +1 −1 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ EXPORT(sysn32_call_table) PTR sys_mprotect /* 6010 */ PTR sys_munmap PTR sys_brk PTR sys_32_rt_sigaction PTR compat_sys_rt_sigaction PTR compat_sys_rt_sigprocmask PTR compat_sys_ioctl /* 6015 */ PTR sys_pread64 Loading
arch/mips/kernel/scall64-o32.S +1 −1 Original line number Diff line number Diff line Loading @@ -386,7 +386,7 @@ sys_call_table: PTR sys_getresgid PTR sys_prctl PTR sys32_rt_sigreturn PTR sys_32_rt_sigaction PTR compat_sys_rt_sigaction PTR compat_sys_rt_sigprocmask /* 4195 */ PTR compat_sys_rt_sigpending PTR compat_sys_rt_sigtimedwait Loading
arch/mips/kernel/signal32.c +2 −52 Original line number Diff line number Diff line Loading @@ -55,12 +55,6 @@ extern asmlinkage int fpu_emulator_restore_context32(struct sigcontext32 __user typedef unsigned int __sighandler32_t; typedef void (*vfptr_t)(void); struct sigaction32 { unsigned int sa_flags; __sighandler32_t sa_handler; compat_sigset_t sa_mask; }; struct ucontext32 { u32 uc_flags; s32 uc_link; Loading Loading @@ -278,8 +272,8 @@ asmlinkage int sys32_sigsuspend(compat_sigset_t __user *uset) return compat_sys_rt_sigsuspend(uset, sizeof(compat_sigset_t)); } SYSCALL_DEFINE3(32_sigaction, long, sig, const struct sigaction32 __user *, act, struct sigaction32 __user *, oact) SYSCALL_DEFINE3(32_sigaction, long, sig, const struct compat_sigaction __user *, act, struct compat_sigaction __user *, oact) { struct k_sigaction new_ka, old_ka; int ret; Loading Loading @@ -564,50 +558,6 @@ struct mips_abi mips_abi_32 = { .restart = __NR_O32_restart_syscall }; SYSCALL_DEFINE4(32_rt_sigaction, int, sig, const struct sigaction32 __user *, act, struct sigaction32 __user *, oact, unsigned int, sigsetsize) { struct k_sigaction new_sa, old_sa; int ret = -EINVAL; /* XXX: Don't preclude handling different sized sigset_t's. */ if (sigsetsize != sizeof(sigset_t)) goto out; if (act) { s32 handler; int err = 0; if (!access_ok(VERIFY_READ, act, sizeof(*act))) return -EFAULT; err |= __get_user(handler, &act->sa_handler); new_sa.sa.sa_handler = (void __user *)(s64)handler; err |= __get_user(new_sa.sa.sa_flags, &act->sa_flags); err |= get_sigset(&new_sa.sa.sa_mask, &act->sa_mask); if (err) return -EFAULT; } ret = do_sigaction(sig, act ? &new_sa : NULL, oact ? &old_sa : NULL); if (!ret && oact) { int err = 0; if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact))) return -EFAULT; err |= __put_user((u32)(u64)old_sa.sa.sa_handler, &oact->sa_handler); err |= __put_user(old_sa.sa.sa_flags, &oact->sa_flags); err |= put_sigset(&old_sa.sa.sa_mask, &oact->sa_mask); if (err) return -EFAULT; } out: return ret; } static int signal32_init(void) { if (cpu_has_fpu) { Loading