signal: Remove task parameter from force_sig
All of the remaining callers pass current into force_sig so remove the task parameter to make this obvious and to make misuse more difficult in the future. This also makes it clear force_sig passes current into force_sig_info. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
cb44c9a0ab
commit
3cf5d076fb
@ -225,7 +225,7 @@ do_sigreturn(struct sigcontext __user *sc)
|
||||
return;
|
||||
|
||||
give_sigsegv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
asmlinkage void
|
||||
@ -253,7 +253,7 @@ do_rt_sigreturn(struct rt_sigframe __user *frame)
|
||||
return;
|
||||
|
||||
give_sigsegv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
|
||||
|
@ -100,7 +100,7 @@ fault:
|
||||
goto again;
|
||||
|
||||
fail:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -197,7 +197,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
|
||||
return regs->r0;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -250,7 +250,7 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs)
|
||||
return regs->ARM_r0;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -283,7 +283,7 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
|
||||
return regs->ARM_r0;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -257,7 +257,7 @@ void arm64_force_sig_fault(int signo, int code, void __user *addr,
|
||||
{
|
||||
arm64_show_signal(signo, str);
|
||||
if (signo == SIGKILL)
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
else
|
||||
force_sig_fault(signo, code, addr, current);
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ asmlinkage int do_rt_sigreturn(struct pt_regs *regs)
|
||||
return regs->a4;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,6 @@ SYSCALL_DEFINE0(rt_sigreturn)
|
||||
{
|
||||
struct pt_regs *regs = current_pt_regs();
|
||||
struct rt_sigframe __user *frame;
|
||||
struct task_struct *task;
|
||||
sigset_t set;
|
||||
|
||||
/* Always make any pending restarted system calls return -EINTR */
|
||||
@ -86,8 +85,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
|
||||
return regs->a0;
|
||||
|
||||
badframe:
|
||||
task = current;
|
||||
force_sig(SIGSEGV, task);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -250,7 +250,7 @@ asmlinkage void trace_trap(unsigned long bp)
|
||||
{
|
||||
if ((unsigned long)current->thread.breakinfo.addr == bp) {
|
||||
user_disable_single_step(current);
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
} else
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
@ -40,5 +40,5 @@ void user_enable_single_step(struct task_struct *child)
|
||||
asmlinkage void trace_trap(unsigned long bp)
|
||||
{
|
||||
(void)bp;
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ asmlinkage int sys_rt_sigreturn(void)
|
||||
return er0;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -265,6 +265,6 @@ asmlinkage int sys_rt_sigreturn(void)
|
||||
return regs->r00;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ int die_if_kernel(char *str, struct pt_regs *regs, long err)
|
||||
static void misaligned_instruction(struct pt_regs *regs)
|
||||
{
|
||||
die_if_kernel("Misaligned Instruction", regs, 0);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -263,19 +263,19 @@ static void misaligned_instruction(struct pt_regs *regs)
|
||||
static void misaligned_data_load(struct pt_regs *regs)
|
||||
{
|
||||
die_if_kernel("Misaligned Data Load", regs, 0);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
}
|
||||
|
||||
static void misaligned_data_store(struct pt_regs *regs)
|
||||
{
|
||||
die_if_kernel("Misaligned Data Store", regs, 0);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
}
|
||||
|
||||
static void illegal_instruction(struct pt_regs *regs)
|
||||
{
|
||||
die_if_kernel("Illegal Instruction", regs, 0);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -285,7 +285,7 @@ static void illegal_instruction(struct pt_regs *regs)
|
||||
static void precise_bus_error(struct pt_regs *regs)
|
||||
{
|
||||
die_if_kernel("Precise Bus Error", regs, 0);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -152,7 +152,7 @@ ia64_rt_sigreturn (struct sigscratch *scr)
|
||||
return retval;
|
||||
|
||||
give_sigsegv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -589,14 +589,14 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa,
|
||||
printk(KERN_ERR "Unexpected IA-32 exception (Trap 45)\n");
|
||||
printk(KERN_ERR " iip - 0x%lx, ifa - 0x%lx, isr - 0x%lx\n",
|
||||
iip, ifa, isr);
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return;
|
||||
|
||||
case 46:
|
||||
printk(KERN_ERR "Unexpected IA-32 intercept trap (Trap 46)\n");
|
||||
printk(KERN_ERR " iip - 0x%lx, ifa - 0x%lx, isr - 0x%lx, iim - 0x%lx\n",
|
||||
iip, ifa, isr, iim);
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return;
|
||||
|
||||
case 47:
|
||||
@ -608,5 +608,5 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa,
|
||||
break;
|
||||
}
|
||||
if (!die_if_kernel(buf, ®s, error))
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
@ -803,7 +803,7 @@ asmlinkage int do_sigreturn(struct pt_regs *regs, struct switch_stack *sw)
|
||||
return regs->d0;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -825,7 +825,7 @@ asmlinkage int do_rt_sigreturn(struct pt_regs *regs, struct switch_stack *sw)
|
||||
return regs->d0;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -431,7 +431,7 @@ static inline void bus_error030 (struct frame *fp)
|
||||
pr_err("BAD KERNEL BUSERR\n");
|
||||
|
||||
die_if_kernel("Oops", &fp->ptregs,0);
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
@ -463,7 +463,7 @@ static inline void bus_error030 (struct frame *fp)
|
||||
!(ssw & RW) ? "write" : "read", addr,
|
||||
fp->ptregs.pc);
|
||||
die_if_kernel ("Oops", &fp->ptregs, buserr_type);
|
||||
force_sig (SIGBUS, current);
|
||||
force_sig (SIGBUS);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -493,7 +493,7 @@ static inline void bus_error030 (struct frame *fp)
|
||||
do_page_fault (&fp->ptregs, addr, 0);
|
||||
} else {
|
||||
pr_debug("protection fault on insn access (segv).\n");
|
||||
force_sig (SIGSEGV, current);
|
||||
force_sig (SIGSEGV);
|
||||
}
|
||||
}
|
||||
#else
|
||||
@ -571,7 +571,7 @@ static inline void bus_error030 (struct frame *fp)
|
||||
!(ssw & RW) ? "write" : "read", addr,
|
||||
fp->ptregs.pc);
|
||||
die_if_kernel("Oops",&fp->ptregs,mmusr);
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return;
|
||||
} else {
|
||||
#if 0
|
||||
@ -598,7 +598,7 @@ static inline void bus_error030 (struct frame *fp)
|
||||
#endif
|
||||
pr_debug("Unknown SIGSEGV - 1\n");
|
||||
die_if_kernel("Oops",&fp->ptregs,mmusr);
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -621,7 +621,7 @@ static inline void bus_error030 (struct frame *fp)
|
||||
buserr:
|
||||
pr_err("BAD KERNEL BUSERR\n");
|
||||
die_if_kernel("Oops",&fp->ptregs,0);
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -660,7 +660,7 @@ static inline void bus_error030 (struct frame *fp)
|
||||
addr, fp->ptregs.pc);
|
||||
pr_debug("Unknown SIGSEGV - 2\n");
|
||||
die_if_kernel("Oops",&fp->ptregs,mmusr);
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -804,7 +804,7 @@ asmlinkage void buserr_c(struct frame *fp)
|
||||
default:
|
||||
die_if_kernel("bad frame format",&fp->ptregs,0);
|
||||
pr_debug("Unknown SIGSEGV - 4\n");
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,7 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
|
||||
return rval;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ int __isa_exception_epc(struct pt_regs *regs)
|
||||
/* Calculate exception PC in branch delay slot. */
|
||||
if (__get_user(inst, (u16 __user *) msk_isa16_mode(epc))) {
|
||||
/* This should never happen because delay slot was checked. */
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return epc;
|
||||
}
|
||||
if (cpu_has_mips16) {
|
||||
@ -305,7 +305,7 @@ int __microMIPS_compute_return_epc(struct pt_regs *regs)
|
||||
return 0;
|
||||
|
||||
sigsegv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
@ -328,7 +328,7 @@ int __MIPS16e_compute_return_epc(struct pt_regs *regs)
|
||||
/* Read the instruction. */
|
||||
addr = (u16 __user *)msk_isa16_mode(epc);
|
||||
if (__get_user(inst.full, addr)) {
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
@ -343,7 +343,7 @@ int __MIPS16e_compute_return_epc(struct pt_regs *regs)
|
||||
case MIPS16e_jal_op:
|
||||
addr += 1;
|
||||
if (__get_user(inst2, addr)) {
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return -EFAULT;
|
||||
}
|
||||
fullinst = ((unsigned)inst.full << 16) | inst2;
|
||||
@ -829,17 +829,17 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
sigill_dsp:
|
||||
pr_debug("%s: DSP branch but not DSP ASE - sending SIGILL.\n",
|
||||
current->comm);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
return -EFAULT;
|
||||
sigill_r2r6:
|
||||
pr_debug("%s: R2 branch but r2-to-r6 emulator is not present - sending SIGILL.\n",
|
||||
current->comm);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
return -EFAULT;
|
||||
sigill_r6:
|
||||
pr_debug("%s: R6 branch but no MIPSr6 ISA support - sending SIGILL.\n",
|
||||
current->comm);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
return -EFAULT;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__compute_return_epc_for_insn);
|
||||
@ -859,7 +859,7 @@ int __compute_return_epc(struct pt_regs *regs)
|
||||
*/
|
||||
addr = (unsigned int __user *) epc;
|
||||
if (__get_user(insn.word, addr)) {
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
@ -867,7 +867,7 @@ int __compute_return_epc(struct pt_regs *regs)
|
||||
|
||||
unaligned:
|
||||
printk("%s: unaligned epc - sending SIGBUS.\n", current->comm);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
|
@ -232,7 +232,7 @@ static int evaluate_branch_instruction(struct kprobe *p, struct pt_regs *regs,
|
||||
|
||||
unaligned:
|
||||
pr_notice("%s: unaligned epc - sending SIGBUS.\n", current->comm);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
return -EFAULT;
|
||||
|
||||
}
|
||||
|
@ -641,7 +641,7 @@ asmlinkage void sys_sigreturn(void)
|
||||
if (sig < 0)
|
||||
goto badframe;
|
||||
else if (sig)
|
||||
force_sig(sig, current);
|
||||
force_sig(sig);
|
||||
|
||||
/*
|
||||
* Don't let your children do this ...
|
||||
@ -654,7 +654,7 @@ asmlinkage void sys_sigreturn(void)
|
||||
/* Unreached */
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
#endif /* CONFIG_TRAD_SIGNALS */
|
||||
|
||||
@ -678,7 +678,7 @@ asmlinkage void sys_rt_sigreturn(void)
|
||||
if (sig < 0)
|
||||
goto badframe;
|
||||
else if (sig)
|
||||
force_sig(sig, current);
|
||||
force_sig(sig);
|
||||
|
||||
if (restore_altstack(&frame->rs_uc.uc_stack))
|
||||
goto badframe;
|
||||
@ -694,7 +694,7 @@ asmlinkage void sys_rt_sigreturn(void)
|
||||
/* Unreached */
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_TRAD_SIGNALS
|
||||
|
@ -84,7 +84,7 @@ asmlinkage void sysn32_rt_sigreturn(void)
|
||||
if (sig < 0)
|
||||
goto badframe;
|
||||
else if (sig)
|
||||
force_sig(sig, current);
|
||||
force_sig(sig);
|
||||
|
||||
if (compat_restore_altstack(&frame->rs_uc.uc_stack))
|
||||
goto badframe;
|
||||
@ -100,7 +100,7 @@ asmlinkage void sysn32_rt_sigreturn(void)
|
||||
/* Unreached */
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
static int setup_rt_frame_n32(void *sig_return, struct ksignal *ksig,
|
||||
|
@ -171,7 +171,7 @@ asmlinkage void sys32_rt_sigreturn(void)
|
||||
if (sig < 0)
|
||||
goto badframe;
|
||||
else if (sig)
|
||||
force_sig(sig, current);
|
||||
force_sig(sig);
|
||||
|
||||
if (compat_restore_altstack(&frame->rs_uc.uc_stack))
|
||||
goto badframe;
|
||||
@ -187,7 +187,7 @@ asmlinkage void sys32_rt_sigreturn(void)
|
||||
/* Unreached */
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
static int setup_rt_frame_32(void *sig_return, struct ksignal *ksig,
|
||||
@ -273,7 +273,7 @@ asmlinkage void sys32_sigreturn(void)
|
||||
if (sig < 0)
|
||||
goto badframe;
|
||||
else if (sig)
|
||||
force_sig(sig, current);
|
||||
force_sig(sig);
|
||||
|
||||
/*
|
||||
* Don't let your children do this ...
|
||||
@ -286,5 +286,5 @@ asmlinkage void sys32_sigreturn(void)
|
||||
/* Unreached */
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
@ -482,7 +482,7 @@ asmlinkage void do_be(struct pt_regs *regs)
|
||||
goto out;
|
||||
|
||||
die_if_kernel("Oops", regs);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
|
||||
out:
|
||||
exception_exit(prev_state);
|
||||
@ -765,7 +765,7 @@ int process_fpemu_return(int sig, void __user *fault_addr, unsigned long fcr31)
|
||||
return 1;
|
||||
|
||||
default:
|
||||
force_sig(sig, current);
|
||||
force_sig(sig);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@ -947,7 +947,7 @@ void do_trap_or_bp(struct pt_regs *regs, unsigned int code, int si_code,
|
||||
break;
|
||||
case BRK_BUG:
|
||||
die_if_kernel("Kernel bug detected", regs);
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
break;
|
||||
case BRK_MEMU:
|
||||
/*
|
||||
@ -962,7 +962,7 @@ void do_trap_or_bp(struct pt_regs *regs, unsigned int code, int si_code,
|
||||
return;
|
||||
|
||||
die_if_kernel("Math emu break/trap", regs);
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
break;
|
||||
default:
|
||||
scnprintf(b, sizeof(b), "%s instruction in kernel code", str);
|
||||
@ -970,7 +970,7 @@ void do_trap_or_bp(struct pt_regs *regs, unsigned int code, int si_code,
|
||||
if (si_code) {
|
||||
force_sig_fault(SIGTRAP, si_code, NULL, current);
|
||||
} else {
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1063,7 +1063,7 @@ out:
|
||||
return;
|
||||
|
||||
out_sigsegv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1105,7 +1105,7 @@ out:
|
||||
return;
|
||||
|
||||
out_sigsegv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1191,7 +1191,7 @@ no_r2_instr:
|
||||
if (unlikely(status > 0)) {
|
||||
regs->cp0_epc = old_epc; /* Undo skip-over. */
|
||||
regs->regs[31] = old31;
|
||||
force_sig(status, current);
|
||||
force_sig(status);
|
||||
}
|
||||
|
||||
out:
|
||||
@ -1220,7 +1220,7 @@ static int default_cu2_call(struct notifier_block *nfb, unsigned long action,
|
||||
|
||||
die_if_kernel("COP2: Unhandled kernel unaligned access or invalid "
|
||||
"instruction", regs);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
@ -1383,7 +1383,7 @@ asmlinkage void do_cpu(struct pt_regs *regs)
|
||||
if (unlikely(status > 0)) {
|
||||
regs->cp0_epc = old_epc; /* Undo skip-over. */
|
||||
regs->regs[31] = old31;
|
||||
force_sig(status, current);
|
||||
force_sig(status);
|
||||
}
|
||||
|
||||
break;
|
||||
@ -1403,7 +1403,7 @@ asmlinkage void do_cpu(struct pt_regs *regs)
|
||||
* emulator too.
|
||||
*/
|
||||
if (raw_cpu_has_fpu || !cpu_has_mips_4_5_64_r2_r6) {
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
break;
|
||||
}
|
||||
/* Fall through. */
|
||||
@ -1437,7 +1437,7 @@ asmlinkage void do_cpu(struct pt_regs *regs)
|
||||
#else /* CONFIG_MIPS_FP_SUPPORT */
|
||||
case 1:
|
||||
case 3:
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
break;
|
||||
#endif /* CONFIG_MIPS_FP_SUPPORT */
|
||||
|
||||
@ -1464,7 +1464,7 @@ asmlinkage void do_msa_fpe(struct pt_regs *regs, unsigned int msacsr)
|
||||
local_irq_enable();
|
||||
|
||||
die_if_kernel("do_msa_fpe invoked from kernel context!", regs);
|
||||
force_sig(SIGFPE, current);
|
||||
force_sig(SIGFPE);
|
||||
out:
|
||||
exception_exit(prev_state);
|
||||
}
|
||||
@ -1477,7 +1477,7 @@ asmlinkage void do_msa(struct pt_regs *regs)
|
||||
prev_state = exception_enter();
|
||||
|
||||
if (!cpu_has_msa || test_thread_flag(TIF_32BIT_FPREGS)) {
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1485,7 +1485,7 @@ asmlinkage void do_msa(struct pt_regs *regs)
|
||||
|
||||
err = enable_restore_fp_context(1);
|
||||
if (err)
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
out:
|
||||
exception_exit(prev_state);
|
||||
}
|
||||
@ -1495,7 +1495,7 @@ asmlinkage void do_mdmx(struct pt_regs *regs)
|
||||
enum ctx_state prev_state;
|
||||
|
||||
prev_state = exception_enter();
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
exception_exit(prev_state);
|
||||
}
|
||||
|
||||
@ -1592,7 +1592,7 @@ asmlinkage void do_mt(struct pt_regs *regs)
|
||||
}
|
||||
die_if_kernel("MIPS MT Thread exception in kernel", regs);
|
||||
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
|
||||
@ -1601,7 +1601,7 @@ asmlinkage void do_dsp(struct pt_regs *regs)
|
||||
if (cpu_has_dsp)
|
||||
panic("Unexpected DSP exception");
|
||||
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
asmlinkage void do_reserved(struct pt_regs *regs)
|
||||
|
@ -1365,20 +1365,20 @@ fault:
|
||||
return;
|
||||
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
|
||||
return;
|
||||
|
||||
sigbus:
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
|
||||
return;
|
||||
|
||||
sigill:
|
||||
die_if_kernel
|
||||
("Unhandled kernel unaligned access or invalid instruction", regs);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
/* Recode table from 16-bit register notation to 32-bit GPR. */
|
||||
@ -1991,20 +1991,20 @@ fault:
|
||||
return;
|
||||
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
|
||||
return;
|
||||
|
||||
sigbus:
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
|
||||
return;
|
||||
|
||||
sigill:
|
||||
die_if_kernel
|
||||
("Unhandled kernel unaligned access or invalid instruction", regs);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr)
|
||||
@ -2271,20 +2271,20 @@ fault:
|
||||
return;
|
||||
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
|
||||
return;
|
||||
|
||||
sigbus:
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
|
||||
return;
|
||||
|
||||
sigill:
|
||||
die_if_kernel
|
||||
("Unhandled kernel unaligned access or invalid instruction", regs);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
asmlinkage void do_ade(struct pt_regs *regs)
|
||||
@ -2364,7 +2364,7 @@ asmlinkage void do_ade(struct pt_regs *regs)
|
||||
|
||||
sigbus:
|
||||
die_if_kernel("Kernel unaligned instruction access", regs);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
|
||||
/*
|
||||
* XXX On return from the signal handler we should advance the epc
|
||||
|
@ -98,7 +98,7 @@ void ip22_be_interrupt(int irq)
|
||||
field, regs->cp0_epc, field, regs->regs[31]);
|
||||
/* Assume it would be too dangerous to continue ... */
|
||||
die_if_kernel("Oops", regs);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
}
|
||||
|
||||
static int ip22_be_handler(struct pt_regs *regs, int is_fixup)
|
||||
|
@ -462,7 +462,7 @@ void ip22_be_interrupt(int irq)
|
||||
if (ip28_be_interrupt(regs) != MIPS_BE_DISCARD) {
|
||||
/* Assume it would be too dangerous to continue ... */
|
||||
die_if_kernel("Oops", regs);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
} else if (debug_be_interrupt)
|
||||
show_regs(regs);
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ int ip27_be_handler(struct pt_regs *regs, int is_fixup)
|
||||
show_regs(regs);
|
||||
dump_tlb_all();
|
||||
while(1);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
}
|
||||
|
||||
void __init ip27_be_init(void)
|
||||
|
@ -29,7 +29,7 @@ static int ip32_be_handler(struct pt_regs *regs, int is_fixup)
|
||||
show_regs(regs);
|
||||
dump_tlb_all();
|
||||
while(1);
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
}
|
||||
|
||||
void __init ip32_be_init(void)
|
||||
|
@ -163,7 +163,7 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
|
||||
return regs->uregs[0];
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -288,7 +288,7 @@ void unhandled_interruption(struct pt_regs *regs)
|
||||
show_regs(regs);
|
||||
if (!user_mode(regs))
|
||||
do_exit(SIGKILL);
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
}
|
||||
|
||||
void unhandled_exceptions(unsigned long entry, unsigned long addr,
|
||||
@ -299,7 +299,7 @@ void unhandled_exceptions(unsigned long entry, unsigned long addr,
|
||||
show_regs(regs);
|
||||
if (!user_mode(regs))
|
||||
do_exit(SIGKILL);
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
}
|
||||
|
||||
extern int do_page_fault(unsigned long entry, unsigned long addr,
|
||||
@ -326,7 +326,7 @@ void do_revinsn(struct pt_regs *regs)
|
||||
show_regs(regs);
|
||||
if (!user_mode(regs))
|
||||
do_exit(SIGILL);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ALIGNMENT_TRAP
|
||||
|
@ -120,7 +120,7 @@ asmlinkage int do_rt_sigreturn(struct switch_stack *sw)
|
||||
return rval;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -99,7 +99,7 @@ asmlinkage long _sys_rt_sigreturn(struct pt_regs *regs)
|
||||
return regs->gpr[11];
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -376,7 +376,7 @@ static inline void simulate_lwa(struct pt_regs *regs, unsigned long address,
|
||||
|
||||
if (get_user(value, lwa_addr)) {
|
||||
if (user_mode(regs)) {
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -423,7 +423,7 @@ static inline void simulate_swa(struct pt_regs *regs, unsigned long address,
|
||||
|
||||
if (put_user(regs->gpr[rb], vaddr)) {
|
||||
if (user_mode(regs)) {
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -164,7 +164,7 @@ sys_rt_sigreturn(struct pt_regs *regs, int in_syscall)
|
||||
|
||||
give_sigsegv:
|
||||
DBG(1,"sys_rt_sigreturn: Sending SIGSEGV\n");
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1249,7 +1249,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
|
||||
current->comm, current->pid,
|
||||
rt_sf, regs->nip, regs->link);
|
||||
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1338,7 +1338,7 @@ SYSCALL_DEFINE3(debug_setcontext, struct ucontext __user *, ctx,
|
||||
current->comm, current->pid,
|
||||
ctx, regs->nip, regs->link);
|
||||
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1516,6 +1516,6 @@ badframe:
|
||||
current->comm, current->pid,
|
||||
addr, regs->nip, regs->link);
|
||||
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
@ -812,7 +812,7 @@ badframe:
|
||||
current->comm, current->pid, "rt_sigreturn",
|
||||
(long)uc, regs->nip, regs->link);
|
||||
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -443,7 +443,7 @@ long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *event)
|
||||
|
||||
else if (unlikely((status & SPU_STATUS_STOPPED_BY_STOP)
|
||||
&& (status >> SPU_STOP_STATUS_SHIFT) == 0x3fff)) {
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
ret = -ERESTARTSYS;
|
||||
}
|
||||
|
||||
|
@ -139,7 +139,7 @@ badframe:
|
||||
task->comm, task_pid_nr(task), __func__,
|
||||
frame, (void *)regs->sepc, (void *)regs->sp);
|
||||
}
|
||||
force_sig(SIGSEGV, task);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -194,7 +194,7 @@ COMPAT_SYSCALL_DEFINE0(sigreturn)
|
||||
load_sigregs();
|
||||
return regs->gprs[2];
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -217,7 +217,7 @@ COMPAT_SYSCALL_DEFINE0(rt_sigreturn)
|
||||
load_sigregs();
|
||||
return regs->gprs[2];
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -232,7 +232,7 @@ SYSCALL_DEFINE0(sigreturn)
|
||||
load_sigregs();
|
||||
return regs->gprs[2];
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -256,7 +256,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
|
||||
load_sigregs();
|
||||
return regs->gprs[2];
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -568,5 +568,5 @@ BUILD_TRAP_HANDLER(fpu_error)
|
||||
return;
|
||||
}
|
||||
|
||||
force_sig(SIGFPE, tsk);
|
||||
force_sig(SIGFPE);
|
||||
}
|
||||
|
@ -421,5 +421,5 @@ BUILD_TRAP_HANDLER(fpu_error)
|
||||
}
|
||||
}
|
||||
|
||||
force_sig(SIGFPE, tsk);
|
||||
force_sig(SIGFPE);
|
||||
}
|
||||
|
@ -100,9 +100,7 @@ void restore_fpu(struct task_struct *tsk)
|
||||
|
||||
asmlinkage void do_fpu_error(unsigned long ex, struct pt_regs *regs)
|
||||
{
|
||||
struct task_struct *tsk = current;
|
||||
|
||||
regs->pc += 4;
|
||||
|
||||
force_sig(SIGFPE, tsk);
|
||||
force_sig(SIGFPE);
|
||||
}
|
||||
|
@ -550,7 +550,7 @@ asmlinkage void do_single_step(unsigned long long vec, struct pt_regs *regs)
|
||||
continually stepping. */
|
||||
local_irq_enable();
|
||||
regs->sr &= ~SR_SSTEP;
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
}
|
||||
|
||||
/* Called with interrupts disabled */
|
||||
@ -561,7 +561,7 @@ BUILD_TRAP_HANDLER(breakpoint)
|
||||
/* We need to forward step the PC, to counteract the backstep done
|
||||
in signal.c. */
|
||||
local_irq_enable();
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
regs->pc += 4;
|
||||
}
|
||||
|
||||
|
@ -176,7 +176,7 @@ asmlinkage int sys_sigreturn(void)
|
||||
return r0;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -207,7 +207,7 @@ asmlinkage int sys_rt_sigreturn(void)
|
||||
return r0;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -277,7 +277,7 @@ asmlinkage int sys_sigreturn(unsigned long r2, unsigned long r3,
|
||||
return (int) ret;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -311,7 +311,7 @@ asmlinkage int sys_rt_sigreturn(unsigned long r2, unsigned long r3,
|
||||
return (int) ret;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -141,7 +141,7 @@ BUILD_TRAP_HANDLER(debug)
|
||||
SIGTRAP) == NOTIFY_STOP)
|
||||
return;
|
||||
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -167,7 +167,7 @@ BUILD_TRAP_HANDLER(bug)
|
||||
}
|
||||
#endif
|
||||
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
}
|
||||
|
||||
BUILD_TRAP_HANDLER(nmi)
|
||||
|
@ -611,7 +611,6 @@ asmlinkage void do_reserved_inst(void)
|
||||
{
|
||||
struct pt_regs *regs = current_pt_regs();
|
||||
unsigned long error_code;
|
||||
struct task_struct *tsk = current;
|
||||
|
||||
#ifdef CONFIG_SH_FPU_EMU
|
||||
unsigned short inst = 0;
|
||||
@ -633,7 +632,7 @@ asmlinkage void do_reserved_inst(void)
|
||||
/* Enable DSP mode, and restart instruction. */
|
||||
regs->sr |= SR_DSP;
|
||||
/* Save DSP mode */
|
||||
tsk->thread.dsp_status.status |= SR_DSP;
|
||||
current->thread.dsp_status.status |= SR_DSP;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@ -641,7 +640,7 @@ asmlinkage void do_reserved_inst(void)
|
||||
error_code = lookup_exception_vector();
|
||||
|
||||
local_irq_enable();
|
||||
force_sig(SIGILL, tsk);
|
||||
force_sig(SIGILL);
|
||||
die_if_no_fixup("reserved instruction", regs, error_code);
|
||||
}
|
||||
|
||||
@ -697,7 +696,6 @@ asmlinkage void do_illegal_slot_inst(void)
|
||||
{
|
||||
struct pt_regs *regs = current_pt_regs();
|
||||
unsigned long inst;
|
||||
struct task_struct *tsk = current;
|
||||
|
||||
if (kprobe_handle_illslot(regs->pc) == 0)
|
||||
return;
|
||||
@ -716,7 +714,7 @@ asmlinkage void do_illegal_slot_inst(void)
|
||||
inst = lookup_exception_vector();
|
||||
|
||||
local_irq_enable();
|
||||
force_sig(SIGILL, tsk);
|
||||
force_sig(SIGILL);
|
||||
die_if_no_fixup("illegal slot instruction", regs, inst);
|
||||
}
|
||||
|
||||
|
@ -599,7 +599,7 @@ static void do_unhandled_exception(int signr, char *str, unsigned long error,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
if (user_mode(regs))
|
||||
force_sig(signr, current);
|
||||
force_sig(signr);
|
||||
|
||||
die_if_no_fixup(str, regs, error);
|
||||
}
|
||||
|
@ -570,7 +570,7 @@ void fault_in_user_windows(struct pt_regs *regs)
|
||||
|
||||
barf:
|
||||
set_thread_wsaved(window + 1);
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
asmlinkage long sparc_do_fork(unsigned long clone_flags,
|
||||
|
@ -170,7 +170,7 @@ void do_sigreturn32(struct pt_regs *regs)
|
||||
return;
|
||||
|
||||
segv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
asmlinkage void do_rt_sigreturn32(struct pt_regs *regs)
|
||||
@ -256,7 +256,7 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs)
|
||||
set_current_blocked(&set);
|
||||
return;
|
||||
segv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize)
|
||||
|
@ -137,7 +137,7 @@ asmlinkage void do_sigreturn(struct pt_regs *regs)
|
||||
return;
|
||||
|
||||
segv_and_exit:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
asmlinkage void do_rt_sigreturn(struct pt_regs *regs)
|
||||
@ -196,7 +196,7 @@ asmlinkage void do_rt_sigreturn(struct pt_regs *regs)
|
||||
set_current_blocked(&set);
|
||||
return;
|
||||
segv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize)
|
||||
|
@ -134,7 +134,7 @@ out:
|
||||
exception_exit(prev_state);
|
||||
return;
|
||||
do_sigsegv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -228,7 +228,7 @@ out:
|
||||
exception_exit(prev_state);
|
||||
return;
|
||||
do_sigsegv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -320,7 +320,7 @@ void do_rt_sigreturn(struct pt_regs *regs)
|
||||
set_current_blocked(&set);
|
||||
return;
|
||||
segv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize)
|
||||
|
@ -2181,7 +2181,7 @@ bool sun4v_nonresum_error_user_handled(struct pt_regs *regs,
|
||||
addr += PAGE_SIZE;
|
||||
}
|
||||
}
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -425,7 +425,7 @@ do_sigbus:
|
||||
static void check_stack_aligned(unsigned long sp)
|
||||
{
|
||||
if (sp & 0x7UL)
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
void window_overflow_fault(void)
|
||||
|
@ -32,7 +32,7 @@ void flush_thread(void)
|
||||
if (ret) {
|
||||
printk(KERN_ERR "flush_thread - clearing address space failed, "
|
||||
"err = %d\n", ret);
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
}
|
||||
get_safe_registers(current_pt_regs()->regs.gp,
|
||||
current_pt_regs()->regs.fp);
|
||||
|
@ -329,7 +329,7 @@ void fix_range_common(struct mm_struct *mm, unsigned long start_addr,
|
||||
"process: %d\n", task_tgid_vnr(current));
|
||||
/* We are under mmap_sem, release it such that current can terminate */
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
do_signal(¤t->thread.regs);
|
||||
}
|
||||
}
|
||||
@ -487,7 +487,7 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long address)
|
||||
|
||||
kill:
|
||||
printk(KERN_ERR "Failed to flush page for address 0x%lx\n", address);
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
}
|
||||
|
||||
pgd_t *pgd_offset_proc(struct mm_struct *mm, unsigned long address)
|
||||
|
@ -309,7 +309,7 @@ void relay_signal(int sig, struct siginfo *si, struct uml_pt_regs *regs)
|
||||
} else {
|
||||
printk(KERN_ERR "Attempted to relay unknown signal %d (si_code = %d) with errno %d\n",
|
||||
sig, code, err);
|
||||
force_sig(sig, current);
|
||||
force_sig(sig);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -129,7 +129,7 @@ asmlinkage int __sys_rt_sigreturn(struct pt_regs *regs)
|
||||
return regs->UCreg_00;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -268,7 +268,7 @@ do_ret:
|
||||
return true;
|
||||
|
||||
sigsegv:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1329,7 +1329,7 @@ void do_machine_check(struct pt_regs *regs, long error_code)
|
||||
local_irq_enable();
|
||||
|
||||
if (kill_it || do_memory_failure(&m))
|
||||
force_sig(SIGBUS, current);
|
||||
force_sig(SIGBUS);
|
||||
local_irq_disable();
|
||||
ist_end_non_atomic();
|
||||
} else {
|
||||
|
@ -857,7 +857,7 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where)
|
||||
pr_cont("\n");
|
||||
}
|
||||
|
||||
force_sig(SIGSEGV, me);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_X32_ABI
|
||||
|
@ -254,7 +254,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
|
||||
show_signal(tsk, signr, "trap ", str, regs, error_code);
|
||||
|
||||
if (!sicode)
|
||||
force_sig(signr, tsk);
|
||||
force_sig(signr);
|
||||
else
|
||||
force_sig_fault(signr, sicode, addr, tsk);
|
||||
}
|
||||
@ -566,7 +566,7 @@ do_general_protection(struct pt_regs *regs, long error_code)
|
||||
|
||||
show_signal(tsk, SIGSEGV, "", desc, regs, error_code);
|
||||
|
||||
force_sig(SIGSEGV, tsk);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
NOKPROBE_SYMBOL(do_general_protection);
|
||||
|
||||
|
@ -1087,7 +1087,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs
|
||||
pr_err("return address clobbered: pid=%d, %%sp=%#lx, %%ip=%#lx\n",
|
||||
current->pid, regs->sp, regs->ip);
|
||||
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
return -1;
|
||||
|
@ -583,7 +583,7 @@ int handle_vm86_trap(struct kernel_vm86_regs *regs, long error_code, int trapno)
|
||||
return 1; /* we let this handle by the calling routine */
|
||||
current->thread.trap_nr = trapno;
|
||||
current->thread.error_code = error_code;
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -912,7 +912,7 @@ void mpx_notify_unmap(struct mm_struct *mm, unsigned long start,
|
||||
|
||||
ret = mpx_unmap_tables(mm, start, end);
|
||||
if (ret)
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
/* MPX cannot handle addresses above 47 bits yet. */
|
||||
|
@ -471,7 +471,7 @@ long sys_sigreturn(void)
|
||||
return PT_REGS_SYSCALL_RET(¤t->thread.regs);
|
||||
|
||||
segfault:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -577,6 +577,6 @@ long sys_rt_sigreturn(void)
|
||||
return PT_REGS_SYSCALL_RET(¤t->thread.regs);
|
||||
|
||||
segfault:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
@ -270,7 +270,7 @@ asmlinkage long xtensa_rt_sigreturn(long a0, long a1, long a2, long a3,
|
||||
return ret;
|
||||
|
||||
badframe:
|
||||
force_sig(SIGSEGV, current);
|
||||
force_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -184,7 +184,7 @@ void do_unhandled(struct pt_regs *regs, unsigned long exccause)
|
||||
"\tEXCCAUSE is %ld\n",
|
||||
current->comm, task_pid_nr(current), regs->pc,
|
||||
exccause);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -306,7 +306,7 @@ do_illegal_instruction(struct pt_regs *regs)
|
||||
|
||||
pr_info_ratelimited("Illegal Instruction in '%s' (pid = %d, pc = %#010lx)\n",
|
||||
current->comm, task_pid_nr(current), regs->pc);
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
|
||||
|
||||
@ -354,7 +354,7 @@ do_debug(struct pt_regs *regs)
|
||||
|
||||
/* If in user mode, send SIGTRAP signal to current process */
|
||||
|
||||
force_sig(SIGTRAP, current);
|
||||
force_sig(SIGTRAP);
|
||||
}
|
||||
|
||||
|
||||
|
@ -225,7 +225,7 @@ void lkdtm_CORRUPT_USER_DS(void)
|
||||
set_fs(KERNEL_DS);
|
||||
|
||||
/* Make sure we do not keep running with a KERNEL_DS! */
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
}
|
||||
|
||||
/* Test that VMAP_STACK is actually allocating with a leading guard page */
|
||||
|
@ -335,7 +335,7 @@ extern int kill_pgrp(struct pid *pid, int sig, int priv);
|
||||
extern int kill_pid(struct pid *pid, int sig, int priv);
|
||||
extern __must_check bool do_notify_parent(struct task_struct *, int);
|
||||
extern void __wake_up_parent(struct task_struct *p, struct task_struct *parent);
|
||||
extern void force_sig(int, struct task_struct *);
|
||||
extern void force_sig(int);
|
||||
extern int send_sig(int, struct task_struct *, int);
|
||||
extern int zap_other_threads(struct task_struct *p);
|
||||
extern struct sigqueue *sigqueue_alloc(void);
|
||||
|
@ -266,7 +266,7 @@ static inline void addr_limit_user_check(void)
|
||||
|
||||
if (CHECK_DATA_CORRUPTION(!segment_eq(get_fs(), USER_DS),
|
||||
"Invalid address limit on user-mode return"))
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
|
||||
#ifdef TIF_FSCHECK
|
||||
clear_thread_flag(TIF_FSCHECK);
|
||||
|
@ -2112,7 +2112,7 @@ static void handle_trampoline(struct pt_regs *regs)
|
||||
|
||||
sigill:
|
||||
uprobe_warn(current, "handle uretprobe, sending SIGILL.");
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
|
||||
}
|
||||
|
||||
@ -2228,7 +2228,7 @@ static void handle_singlestep(struct uprobe_task *utask, struct pt_regs *regs)
|
||||
|
||||
if (unlikely(err)) {
|
||||
uprobe_warn(current, "execute the probed insn, sending SIGILL.");
|
||||
force_sig(SIGILL, current);
|
||||
force_sig(SIGILL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -296,7 +296,7 @@ void rseq_syscall(struct pt_regs *regs)
|
||||
return;
|
||||
if (!access_ok(t->rseq, sizeof(*t->rseq)) ||
|
||||
rseq_get_rseq_cs(t, &rseq_cs) || in_rseq_cs(ip, &rseq_cs))
|
||||
force_sig(SIGSEGV, t);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1595,9 +1595,9 @@ send_sig(int sig, struct task_struct *p, int priv)
|
||||
}
|
||||
EXPORT_SYMBOL(send_sig);
|
||||
|
||||
void force_sig(int sig, struct task_struct *p)
|
||||
void force_sig(int sig)
|
||||
{
|
||||
force_sig_info(sig, SEND_SIG_PRIV, p);
|
||||
force_sig_info(sig, SEND_SIG_PRIV, current);
|
||||
}
|
||||
EXPORT_SYMBOL(force_sig);
|
||||
|
||||
@ -1617,7 +1617,7 @@ void force_sigsegv(int sig)
|
||||
p->sighand->action[sig - 1].sa.sa_handler = SIG_DFL;
|
||||
spin_unlock_irqrestore(&p->sighand->siglock, flags);
|
||||
}
|
||||
force_sig(SIGSEGV, p);
|
||||
force_sig(SIGSEGV);
|
||||
}
|
||||
|
||||
int force_sig_fault(int sig, int code, void __user *addr
|
||||
|
@ -111,7 +111,7 @@ static int check_uid_transition(kuid_t parent, kuid_t child)
|
||||
* that could arise from a missing whitelist entry preventing a
|
||||
* privileged process from dropping to a lesser-privileged one.
|
||||
*/
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
return -EACCES;
|
||||
}
|
||||
|
||||
@ -203,7 +203,7 @@ static int safesetid_task_fix_setuid(struct cred *new,
|
||||
break;
|
||||
default:
|
||||
pr_warn("Unknown setid state %d\n", flags);
|
||||
force_sig(SIGKILL, current);
|
||||
force_sig(SIGKILL);
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user