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:
Eric W. Biederman 2019-05-23 10:17:27 -05:00
parent cb44c9a0ab
commit 3cf5d076fb
76 changed files with 160 additions and 166 deletions

View File

@ -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);
}

View File

@ -100,7 +100,7 @@ fault:
goto again;
fail:
force_sig(SIGSEGV, current);
force_sig(SIGSEGV);
return ret;
}

View File

@ -197,7 +197,7 @@ SYSCALL_DEFINE0(rt_sigreturn)
return regs->r0;
badframe:
force_sig(SIGSEGV, current);
force_sig(SIGSEGV);
return 0;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -126,7 +126,7 @@ asmlinkage int sys_rt_sigreturn(void)
return er0;
badframe:
force_sig(SIGSEGV, current);
force_sig(SIGSEGV);
return 0;
}

View File

@ -265,6 +265,6 @@ asmlinkage int sys_rt_sigreturn(void)
return regs->r00;
badframe:
force_sig(SIGSEGV, current);
force_sig(SIGSEGV);
return 0;
}

View File

@ -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);
}
/*

View File

@ -152,7 +152,7 @@ ia64_rt_sigreturn (struct sigscratch *scr)
return retval;
give_sigsegv:
force_sig(SIGSEGV, current);
force_sig(SIGSEGV);
return retval;
}

View File

@ -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, &regs, error))
force_sig(SIGILL, current);
force_sig(SIGILL);
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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

View File

@ -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,

View File

@ -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);
}

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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);
}

View File

@ -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)

View File

@ -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)

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -568,5 +568,5 @@ BUILD_TRAP_HANDLER(fpu_error)
return;
}
force_sig(SIGFPE, tsk);
force_sig(SIGFPE);
}

View File

@ -421,5 +421,5 @@ BUILD_TRAP_HANDLER(fpu_error)
}
}
force_sig(SIGFPE, tsk);
force_sig(SIGFPE);
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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)

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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,

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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;
}

View File

@ -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)

View File

@ -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);

View File

@ -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(&current->mm->mmap_sem);
force_sig(SIGKILL, current);
force_sig(SIGKILL);
do_signal(&current->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)

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -268,7 +268,7 @@ do_ret:
return true;
sigsegv:
force_sig(SIGSEGV, current);
force_sig(SIGSEGV);
return true;
}

View File

@ -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 {

View File

@ -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

View File

@ -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);

View File

@ -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;

View File

@ -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;
}

View File

@ -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. */

View File

@ -471,7 +471,7 @@ long sys_sigreturn(void)
return PT_REGS_SYSCALL_RET(&current->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(&current->thread.regs);
segfault:
force_sig(SIGSEGV, current);
force_sig(SIGSEGV);
return 0;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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 */

View File

@ -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);

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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

View File

@ -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

View File

@ -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;