Loading arch/tile/Kconfig +1 −0 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ config TILE select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_HAVE_NMI_SAFE_CMPXCHG select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA select GENERIC_SIGALTSTACK # FIXME: investigate whether we need/want these options. # FIXME: investigate whether we need/want these options. # select HAVE_IOREMAP_PROT # select HAVE_IOREMAP_PROT Loading arch/tile/include/asm/compat.h +0 −2 Original line number Original line Diff line number Diff line Loading @@ -281,8 +281,6 @@ long compat_sys_rt_sigaction(int sig, struct compat_sigaction __user *act, long compat_sys_rt_sigqueueinfo(int pid, int sig, long compat_sys_rt_sigqueueinfo(int pid, int sig, struct compat_siginfo __user *uinfo); struct compat_siginfo __user *uinfo); long compat_sys_rt_sigreturn(void); long compat_sys_rt_sigreturn(void); long compat_sys_sigaltstack(const struct compat_sigaltstack __user *uss_ptr, struct compat_sigaltstack __user *uoss_ptr); long compat_sys_truncate64(char __user *filename, u32 dummy, u32 low, u32 high); long compat_sys_truncate64(char __user *filename, u32 dummy, u32 low, u32 high); long compat_sys_ftruncate64(unsigned int fd, u32 dummy, u32 low, u32 high); long compat_sys_ftruncate64(unsigned int fd, u32 dummy, u32 low, u32 high); long compat_sys_pread64(unsigned int fd, char __user *ubuf, size_t count, long compat_sys_pread64(unsigned int fd, char __user *ubuf, size_t count, Loading arch/tile/include/asm/syscalls.h +0 −2 Original line number Original line Diff line number Diff line Loading @@ -64,9 +64,7 @@ long sys_ftruncate64(unsigned int fd, loff_t length); /* Provide versions of standard syscalls that use current_pt_regs(). */ /* Provide versions of standard syscalls that use current_pt_regs(). */ long sys_rt_sigreturn(void); long sys_rt_sigreturn(void); long sys_sigaltstack(const stack_t __user *, stack_t __user *); #define sys_rt_sigreturn sys_rt_sigreturn #define sys_rt_sigreturn sys_rt_sigreturn #define sys_sigaltstack sys_sigaltstack /* These are the intvec*.S trampolines. */ /* These are the intvec*.S trampolines. */ long _sys_rt_sigreturn(void); long _sys_rt_sigreturn(void); Loading arch/tile/kernel/compat_signal.c +2 −46 Original line number Original line Diff line number Diff line Loading @@ -41,12 +41,6 @@ struct compat_sigaction { sigset_t sa_mask __packed; sigset_t sa_mask __packed; }; }; struct compat_sigaltstack { compat_uptr_t ss_sp; int ss_flags; compat_size_t ss_size; }; struct compat_ucontext { struct compat_ucontext { compat_ulong_t uc_flags; compat_ulong_t uc_flags; compat_uptr_t uc_link; compat_uptr_t uc_link; Loading Loading @@ -196,40 +190,6 @@ int copy_siginfo_from_user32(siginfo_t *to, struct compat_siginfo __user *from) return err; return err; } } long compat_sys_sigaltstack(const struct compat_sigaltstack __user *uss_ptr, struct compat_sigaltstack __user *uoss_ptr) { stack_t uss, uoss; int ret; mm_segment_t seg; if (uss_ptr) { u32 ptr; memset(&uss, 0, sizeof(stack_t)); if (!access_ok(VERIFY_READ, uss_ptr, sizeof(*uss_ptr)) || __get_user(ptr, &uss_ptr->ss_sp) || __get_user(uss.ss_flags, &uss_ptr->ss_flags) || __get_user(uss.ss_size, &uss_ptr->ss_size)) return -EFAULT; uss.ss_sp = compat_ptr(ptr); } seg = get_fs(); set_fs(KERNEL_DS); ret = do_sigaltstack(uss_ptr ? (stack_t __user __force *)&uss : NULL, (stack_t __user __force *)&uoss, (unsigned long)compat_ptr(current_pt_regs()->sp)); set_fs(seg); if (ret >= 0 && uoss_ptr) { if (!access_ok(VERIFY_WRITE, uoss_ptr, sizeof(*uoss_ptr)) || __put_user(ptr_to_compat(uoss.ss_sp), &uoss_ptr->ss_sp) || __put_user(uoss.ss_flags, &uoss_ptr->ss_flags) || __put_user(uoss.ss_size, &uoss_ptr->ss_size)) ret = -EFAULT; } return ret; } /* The assembly shim for this function arranges to ignore the return value. */ /* The assembly shim for this function arranges to ignore the return value. */ long compat_sys_rt_sigreturn(void) long compat_sys_rt_sigreturn(void) { { Loading @@ -248,7 +208,7 @@ long compat_sys_rt_sigreturn(void) if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) goto badframe; goto badframe; if (compat_sys_sigaltstack(&frame->uc.uc_stack, NULL) == -EFAULT) if (compat_restore_altstack(&frame->uc.uc_stack)) goto badframe; goto badframe; return 0; return 0; Loading Loading @@ -325,11 +285,7 @@ int compat_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, err |= __clear_user(&frame->save_area, sizeof(frame->save_area)); err |= __clear_user(&frame->save_area, sizeof(frame->save_area)); err |= __put_user(0, &frame->uc.uc_flags); err |= __put_user(0, &frame->uc.uc_flags); err |= __put_user(0, &frame->uc.uc_link); err |= __put_user(0, &frame->uc.uc_link); err |= __put_user(ptr_to_compat((void *)(current->sas_ss_sp)), err |= __compat_save_altstack(&frame->uc.uc_stack, regs->sp); &frame->uc.uc_stack.ss_sp); err |= __put_user(sas_ss_flags(regs->sp), &frame->uc.uc_stack.ss_flags); err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); if (err) if (err) Loading arch/tile/kernel/signal.c +2 −13 Original line number Original line Diff line number Diff line Loading @@ -37,13 +37,6 @@ #define DEBUG_SIG 0 #define DEBUG_SIG 0 SYSCALL_DEFINE2(sigaltstack, const stack_t __user *, uss, stack_t __user *, uoss) { return do_sigaltstack(uss, uoss, current_pt_regs()->sp); } /* /* * Do a signal return; undo the signal stack. * Do a signal return; undo the signal stack. */ */ Loading Loading @@ -100,7 +93,7 @@ SYSCALL_DEFINE0(rt_sigreturn) if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) goto badframe; goto badframe; if (do_sigaltstack(&frame->uc.uc_stack, NULL, regs->sp) == -EFAULT) if (restore_altstack(&frame->uc.uc_stack)) goto badframe; goto badframe; return 0; return 0; Loading Loading @@ -191,11 +184,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, err |= __clear_user(&frame->save_area, sizeof(frame->save_area)); err |= __clear_user(&frame->save_area, sizeof(frame->save_area)); err |= __put_user(0, &frame->uc.uc_flags); err |= __put_user(0, &frame->uc.uc_flags); err |= __put_user(NULL, &frame->uc.uc_link); err |= __put_user(NULL, &frame->uc.uc_link); err |= __put_user((void __user *)(current->sas_ss_sp), err |= __save_altstack(&frame->uc.uc_stack, regs->sp); &frame->uc.uc_stack.ss_sp); err |= __put_user(sas_ss_flags(regs->sp), &frame->uc.uc_stack.ss_flags); err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); if (err) if (err) Loading Loading
arch/tile/Kconfig +1 −0 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ config TILE select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_HAVE_NMI_SAFE_CMPXCHG select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA select GENERIC_SIGALTSTACK # FIXME: investigate whether we need/want these options. # FIXME: investigate whether we need/want these options. # select HAVE_IOREMAP_PROT # select HAVE_IOREMAP_PROT Loading
arch/tile/include/asm/compat.h +0 −2 Original line number Original line Diff line number Diff line Loading @@ -281,8 +281,6 @@ long compat_sys_rt_sigaction(int sig, struct compat_sigaction __user *act, long compat_sys_rt_sigqueueinfo(int pid, int sig, long compat_sys_rt_sigqueueinfo(int pid, int sig, struct compat_siginfo __user *uinfo); struct compat_siginfo __user *uinfo); long compat_sys_rt_sigreturn(void); long compat_sys_rt_sigreturn(void); long compat_sys_sigaltstack(const struct compat_sigaltstack __user *uss_ptr, struct compat_sigaltstack __user *uoss_ptr); long compat_sys_truncate64(char __user *filename, u32 dummy, u32 low, u32 high); long compat_sys_truncate64(char __user *filename, u32 dummy, u32 low, u32 high); long compat_sys_ftruncate64(unsigned int fd, u32 dummy, u32 low, u32 high); long compat_sys_ftruncate64(unsigned int fd, u32 dummy, u32 low, u32 high); long compat_sys_pread64(unsigned int fd, char __user *ubuf, size_t count, long compat_sys_pread64(unsigned int fd, char __user *ubuf, size_t count, Loading
arch/tile/include/asm/syscalls.h +0 −2 Original line number Original line Diff line number Diff line Loading @@ -64,9 +64,7 @@ long sys_ftruncate64(unsigned int fd, loff_t length); /* Provide versions of standard syscalls that use current_pt_regs(). */ /* Provide versions of standard syscalls that use current_pt_regs(). */ long sys_rt_sigreturn(void); long sys_rt_sigreturn(void); long sys_sigaltstack(const stack_t __user *, stack_t __user *); #define sys_rt_sigreturn sys_rt_sigreturn #define sys_rt_sigreturn sys_rt_sigreturn #define sys_sigaltstack sys_sigaltstack /* These are the intvec*.S trampolines. */ /* These are the intvec*.S trampolines. */ long _sys_rt_sigreturn(void); long _sys_rt_sigreturn(void); Loading
arch/tile/kernel/compat_signal.c +2 −46 Original line number Original line Diff line number Diff line Loading @@ -41,12 +41,6 @@ struct compat_sigaction { sigset_t sa_mask __packed; sigset_t sa_mask __packed; }; }; struct compat_sigaltstack { compat_uptr_t ss_sp; int ss_flags; compat_size_t ss_size; }; struct compat_ucontext { struct compat_ucontext { compat_ulong_t uc_flags; compat_ulong_t uc_flags; compat_uptr_t uc_link; compat_uptr_t uc_link; Loading Loading @@ -196,40 +190,6 @@ int copy_siginfo_from_user32(siginfo_t *to, struct compat_siginfo __user *from) return err; return err; } } long compat_sys_sigaltstack(const struct compat_sigaltstack __user *uss_ptr, struct compat_sigaltstack __user *uoss_ptr) { stack_t uss, uoss; int ret; mm_segment_t seg; if (uss_ptr) { u32 ptr; memset(&uss, 0, sizeof(stack_t)); if (!access_ok(VERIFY_READ, uss_ptr, sizeof(*uss_ptr)) || __get_user(ptr, &uss_ptr->ss_sp) || __get_user(uss.ss_flags, &uss_ptr->ss_flags) || __get_user(uss.ss_size, &uss_ptr->ss_size)) return -EFAULT; uss.ss_sp = compat_ptr(ptr); } seg = get_fs(); set_fs(KERNEL_DS); ret = do_sigaltstack(uss_ptr ? (stack_t __user __force *)&uss : NULL, (stack_t __user __force *)&uoss, (unsigned long)compat_ptr(current_pt_regs()->sp)); set_fs(seg); if (ret >= 0 && uoss_ptr) { if (!access_ok(VERIFY_WRITE, uoss_ptr, sizeof(*uoss_ptr)) || __put_user(ptr_to_compat(uoss.ss_sp), &uoss_ptr->ss_sp) || __put_user(uoss.ss_flags, &uoss_ptr->ss_flags) || __put_user(uoss.ss_size, &uoss_ptr->ss_size)) ret = -EFAULT; } return ret; } /* The assembly shim for this function arranges to ignore the return value. */ /* The assembly shim for this function arranges to ignore the return value. */ long compat_sys_rt_sigreturn(void) long compat_sys_rt_sigreturn(void) { { Loading @@ -248,7 +208,7 @@ long compat_sys_rt_sigreturn(void) if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) goto badframe; goto badframe; if (compat_sys_sigaltstack(&frame->uc.uc_stack, NULL) == -EFAULT) if (compat_restore_altstack(&frame->uc.uc_stack)) goto badframe; goto badframe; return 0; return 0; Loading Loading @@ -325,11 +285,7 @@ int compat_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, err |= __clear_user(&frame->save_area, sizeof(frame->save_area)); err |= __clear_user(&frame->save_area, sizeof(frame->save_area)); err |= __put_user(0, &frame->uc.uc_flags); err |= __put_user(0, &frame->uc.uc_flags); err |= __put_user(0, &frame->uc.uc_link); err |= __put_user(0, &frame->uc.uc_link); err |= __put_user(ptr_to_compat((void *)(current->sas_ss_sp)), err |= __compat_save_altstack(&frame->uc.uc_stack, regs->sp); &frame->uc.uc_stack.ss_sp); err |= __put_user(sas_ss_flags(regs->sp), &frame->uc.uc_stack.ss_flags); err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); if (err) if (err) Loading
arch/tile/kernel/signal.c +2 −13 Original line number Original line Diff line number Diff line Loading @@ -37,13 +37,6 @@ #define DEBUG_SIG 0 #define DEBUG_SIG 0 SYSCALL_DEFINE2(sigaltstack, const stack_t __user *, uss, stack_t __user *, uoss) { return do_sigaltstack(uss, uoss, current_pt_regs()->sp); } /* /* * Do a signal return; undo the signal stack. * Do a signal return; undo the signal stack. */ */ Loading Loading @@ -100,7 +93,7 @@ SYSCALL_DEFINE0(rt_sigreturn) if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) goto badframe; goto badframe; if (do_sigaltstack(&frame->uc.uc_stack, NULL, regs->sp) == -EFAULT) if (restore_altstack(&frame->uc.uc_stack)) goto badframe; goto badframe; return 0; return 0; Loading Loading @@ -191,11 +184,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, err |= __clear_user(&frame->save_area, sizeof(frame->save_area)); err |= __clear_user(&frame->save_area, sizeof(frame->save_area)); err |= __put_user(0, &frame->uc.uc_flags); err |= __put_user(0, &frame->uc.uc_flags); err |= __put_user(NULL, &frame->uc.uc_link); err |= __put_user(NULL, &frame->uc.uc_link); err |= __put_user((void __user *)(current->sas_ss_sp), err |= __save_altstack(&frame->uc.uc_stack, regs->sp); &frame->uc.uc_stack.ss_sp); err |= __put_user(sas_ss_flags(regs->sp), &frame->uc.uc_stack.ss_flags); err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size); err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); if (err) if (err) Loading