Loading arch/x86/ia32/ia32_signal.c +1 −49 Original line number Diff line number Diff line Loading @@ -136,52 +136,6 @@ asmlinkage long sys32_sigsuspend(int history0, int history1, old_sigset_t mask) return sigsuspend(&blocked); } asmlinkage long sys32_sigaltstack(const stack_ia32_t __user *uss_ptr, stack_ia32_t __user *uoss_ptr, struct pt_regs *regs) { stack_t uss, uoss; int ret, err = 0; mm_segment_t seg; if (uss_ptr) { u32 ptr; memset(&uss, 0, sizeof(stack_t)); if (!access_ok(VERIFY_READ, uss_ptr, sizeof(stack_ia32_t))) return -EFAULT; get_user_try { get_user_ex(ptr, &uss_ptr->ss_sp); get_user_ex(uss.ss_flags, &uss_ptr->ss_flags); get_user_ex(uss.ss_size, &uss_ptr->ss_size); } get_user_catch(err); if (err) return -EFAULT; uss.ss_sp = compat_ptr(ptr); } seg = get_fs(); set_fs(KERNEL_DS); ret = do_sigaltstack((stack_t __force __user *) (uss_ptr ? &uss : NULL), (stack_t __force __user *) &uoss, regs->sp); set_fs(seg); if (ret >= 0 && uoss_ptr) { if (!access_ok(VERIFY_WRITE, uoss_ptr, sizeof(stack_ia32_t))) return -EFAULT; put_user_try { put_user_ex(ptr_to_compat(uoss.ss_sp), &uoss_ptr->ss_sp); put_user_ex(uoss.ss_flags, &uoss_ptr->ss_flags); put_user_ex(uoss.ss_size, &uoss_ptr->ss_size); } put_user_catch(err); if (err) ret = -EFAULT; } return ret; } /* * Do a signal return; undo the signal stack. */ Loading Loading @@ -292,7 +246,6 @@ asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs) struct rt_sigframe_ia32 __user *frame; sigset_t set; unsigned int ax; struct pt_regs tregs; frame = (struct rt_sigframe_ia32 __user *)(regs->sp - 4); Loading @@ -306,8 +259,7 @@ asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs) if (ia32_restore_sigcontext(regs, &frame->uc.uc_mcontext, &ax)) goto badframe; tregs = *regs; if (sys32_sigaltstack(&frame->uc.uc_stack, NULL, &tregs) == -EFAULT) if (compat_restore_altstack(&frame->uc.uc_stack)) goto badframe; return ax; Loading arch/x86/ia32/ia32entry.S +0 −1 Original line number Diff line number Diff line Loading @@ -464,7 +464,6 @@ GLOBAL(\label) PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn, %rdi PTREGSCALL stub32_sigreturn, sys32_sigreturn, %rdi PTREGSCALL stub32_sigaltstack, sys32_sigaltstack, %rdx PTREGSCALL stub32_execve, compat_sys_execve, %rcx PTREGSCALL stub32_fork, sys_fork, %rdi PTREGSCALL stub32_vfork, sys_vfork, %rdi Loading arch/x86/include/asm/ia32.h +2 −8 Original line number Diff line number Diff line Loading @@ -29,16 +29,10 @@ struct old_sigaction32 { unsigned int sa_restorer; /* Another 32 bit pointer */ }; typedef struct sigaltstack_ia32 { unsigned int ss_sp; int ss_flags; unsigned int ss_size; } stack_ia32_t; struct ucontext_ia32 { unsigned int uc_flags; unsigned int uc_link; stack_ia32_t uc_stack; compat_stack_t uc_stack; struct sigcontext_ia32 uc_mcontext; compat_sigset_t uc_sigmask; /* mask last for extensibility */ }; Loading @@ -46,7 +40,7 @@ struct ucontext_ia32 { struct ucontext_x32 { unsigned int uc_flags; unsigned int uc_link; stack_ia32_t uc_stack; compat_stack_t uc_stack; unsigned int uc__pad0; /* needed for alignment */ struct sigcontext uc_mcontext; /* the 64-bit sigcontext type */ compat_sigset_t uc_sigmask; /* mask last for extensibility */ Loading arch/x86/include/asm/sys_ia32.h +0 −2 Original line number Diff line number Diff line Loading @@ -69,8 +69,6 @@ asmlinkage long sys32_fallocate(int, int, unsigned, /* ia32/ia32_signal.c */ asmlinkage long sys32_sigsuspend(int, int, old_sigset_t); asmlinkage long sys32_sigaltstack(const stack_ia32_t __user *, stack_ia32_t __user *, struct pt_regs *); asmlinkage long sys32_sigreturn(struct pt_regs *); asmlinkage long sys32_rt_sigreturn(struct pt_regs *); Loading arch/x86/kernel/entry_64.S +0 −2 Original line number Diff line number Diff line Loading @@ -912,8 +912,6 @@ ENTRY(stub_rt_sigreturn) END(stub_rt_sigreturn) #ifdef CONFIG_X86_X32_ABI PTREGSCALL stub_x32_sigaltstack, sys32_sigaltstack, %rdx ENTRY(stub_x32_rt_sigreturn) CFI_STARTPROC addq $8, %rsp Loading Loading
arch/x86/ia32/ia32_signal.c +1 −49 Original line number Diff line number Diff line Loading @@ -136,52 +136,6 @@ asmlinkage long sys32_sigsuspend(int history0, int history1, old_sigset_t mask) return sigsuspend(&blocked); } asmlinkage long sys32_sigaltstack(const stack_ia32_t __user *uss_ptr, stack_ia32_t __user *uoss_ptr, struct pt_regs *regs) { stack_t uss, uoss; int ret, err = 0; mm_segment_t seg; if (uss_ptr) { u32 ptr; memset(&uss, 0, sizeof(stack_t)); if (!access_ok(VERIFY_READ, uss_ptr, sizeof(stack_ia32_t))) return -EFAULT; get_user_try { get_user_ex(ptr, &uss_ptr->ss_sp); get_user_ex(uss.ss_flags, &uss_ptr->ss_flags); get_user_ex(uss.ss_size, &uss_ptr->ss_size); } get_user_catch(err); if (err) return -EFAULT; uss.ss_sp = compat_ptr(ptr); } seg = get_fs(); set_fs(KERNEL_DS); ret = do_sigaltstack((stack_t __force __user *) (uss_ptr ? &uss : NULL), (stack_t __force __user *) &uoss, regs->sp); set_fs(seg); if (ret >= 0 && uoss_ptr) { if (!access_ok(VERIFY_WRITE, uoss_ptr, sizeof(stack_ia32_t))) return -EFAULT; put_user_try { put_user_ex(ptr_to_compat(uoss.ss_sp), &uoss_ptr->ss_sp); put_user_ex(uoss.ss_flags, &uoss_ptr->ss_flags); put_user_ex(uoss.ss_size, &uoss_ptr->ss_size); } put_user_catch(err); if (err) ret = -EFAULT; } return ret; } /* * Do a signal return; undo the signal stack. */ Loading Loading @@ -292,7 +246,6 @@ asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs) struct rt_sigframe_ia32 __user *frame; sigset_t set; unsigned int ax; struct pt_regs tregs; frame = (struct rt_sigframe_ia32 __user *)(regs->sp - 4); Loading @@ -306,8 +259,7 @@ asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs) if (ia32_restore_sigcontext(regs, &frame->uc.uc_mcontext, &ax)) goto badframe; tregs = *regs; if (sys32_sigaltstack(&frame->uc.uc_stack, NULL, &tregs) == -EFAULT) if (compat_restore_altstack(&frame->uc.uc_stack)) goto badframe; return ax; Loading
arch/x86/ia32/ia32entry.S +0 −1 Original line number Diff line number Diff line Loading @@ -464,7 +464,6 @@ GLOBAL(\label) PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn, %rdi PTREGSCALL stub32_sigreturn, sys32_sigreturn, %rdi PTREGSCALL stub32_sigaltstack, sys32_sigaltstack, %rdx PTREGSCALL stub32_execve, compat_sys_execve, %rcx PTREGSCALL stub32_fork, sys_fork, %rdi PTREGSCALL stub32_vfork, sys_vfork, %rdi Loading
arch/x86/include/asm/ia32.h +2 −8 Original line number Diff line number Diff line Loading @@ -29,16 +29,10 @@ struct old_sigaction32 { unsigned int sa_restorer; /* Another 32 bit pointer */ }; typedef struct sigaltstack_ia32 { unsigned int ss_sp; int ss_flags; unsigned int ss_size; } stack_ia32_t; struct ucontext_ia32 { unsigned int uc_flags; unsigned int uc_link; stack_ia32_t uc_stack; compat_stack_t uc_stack; struct sigcontext_ia32 uc_mcontext; compat_sigset_t uc_sigmask; /* mask last for extensibility */ }; Loading @@ -46,7 +40,7 @@ struct ucontext_ia32 { struct ucontext_x32 { unsigned int uc_flags; unsigned int uc_link; stack_ia32_t uc_stack; compat_stack_t uc_stack; unsigned int uc__pad0; /* needed for alignment */ struct sigcontext uc_mcontext; /* the 64-bit sigcontext type */ compat_sigset_t uc_sigmask; /* mask last for extensibility */ Loading
arch/x86/include/asm/sys_ia32.h +0 −2 Original line number Diff line number Diff line Loading @@ -69,8 +69,6 @@ asmlinkage long sys32_fallocate(int, int, unsigned, /* ia32/ia32_signal.c */ asmlinkage long sys32_sigsuspend(int, int, old_sigset_t); asmlinkage long sys32_sigaltstack(const stack_ia32_t __user *, stack_ia32_t __user *, struct pt_regs *); asmlinkage long sys32_sigreturn(struct pt_regs *); asmlinkage long sys32_rt_sigreturn(struct pt_regs *); Loading
arch/x86/kernel/entry_64.S +0 −2 Original line number Diff line number Diff line Loading @@ -912,8 +912,6 @@ ENTRY(stub_rt_sigreturn) END(stub_rt_sigreturn) #ifdef CONFIG_X86_X32_ABI PTREGSCALL stub_x32_sigaltstack, sys32_sigaltstack, %rdx ENTRY(stub_x32_rt_sigreturn) CFI_STARTPROC addq $8, %rsp Loading