diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2019-05-23 11:17:27 -0400 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2019-05-27 10:36:28 -0400 |
commit | 3cf5d076fb4d48979f382bc9452765bf8b79e740 (patch) | |
tree | 935f7af65a7a7f1ba514f1da5b207e2dc298eaca | |
parent | cb44c9a0ab21a9ae4dfcabac1ed8e38aa872d1af (diff) |
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>
76 files changed, 160 insertions, 166 deletions
diff --git a/arch/alpha/kernel/signal.c b/arch/alpha/kernel/signal.c index 33e904a05881..a813020d2f11 100644 --- a/arch/alpha/kernel/signal.c +++ b/arch/alpha/kernel/signal.c | |||
@@ -225,7 +225,7 @@ do_sigreturn(struct sigcontext __user *sc) | |||
225 | return; | 225 | return; |
226 | 226 | ||
227 | give_sigsegv: | 227 | give_sigsegv: |
228 | force_sig(SIGSEGV, current); | 228 | force_sig(SIGSEGV); |
229 | } | 229 | } |
230 | 230 | ||
231 | asmlinkage void | 231 | asmlinkage void |
@@ -253,7 +253,7 @@ do_rt_sigreturn(struct rt_sigframe __user *frame) | |||
253 | return; | 253 | return; |
254 | 254 | ||
255 | give_sigsegv: | 255 | give_sigsegv: |
256 | force_sig(SIGSEGV, current); | 256 | force_sig(SIGSEGV); |
257 | } | 257 | } |
258 | 258 | ||
259 | 259 | ||
diff --git a/arch/arc/kernel/process.c b/arch/arc/kernel/process.c index 725e556678a4..deee16d5c03f 100644 --- a/arch/arc/kernel/process.c +++ b/arch/arc/kernel/process.c | |||
@@ -100,7 +100,7 @@ fault: | |||
100 | goto again; | 100 | goto again; |
101 | 101 | ||
102 | fail: | 102 | fail: |
103 | force_sig(SIGSEGV, current); | 103 | force_sig(SIGSEGV); |
104 | return ret; | 104 | return ret; |
105 | } | 105 | } |
106 | 106 | ||
diff --git a/arch/arc/kernel/signal.c b/arch/arc/kernel/signal.c index 1bfb7de696bd..547c8f0cdc3a 100644 --- a/arch/arc/kernel/signal.c +++ b/arch/arc/kernel/signal.c | |||
@@ -197,7 +197,7 @@ SYSCALL_DEFINE0(rt_sigreturn) | |||
197 | return regs->r0; | 197 | return regs->r0; |
198 | 198 | ||
199 | badframe: | 199 | badframe: |
200 | force_sig(SIGSEGV, current); | 200 | force_sig(SIGSEGV); |
201 | return 0; | 201 | return 0; |
202 | } | 202 | } |
203 | 203 | ||
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index be5edfdde558..3870e0588d53 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -250,7 +250,7 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs) | |||
250 | return regs->ARM_r0; | 250 | return regs->ARM_r0; |
251 | 251 | ||
252 | badframe: | 252 | badframe: |
253 | force_sig(SIGSEGV, current); | 253 | force_sig(SIGSEGV); |
254 | return 0; | 254 | return 0; |
255 | } | 255 | } |
256 | 256 | ||
@@ -283,7 +283,7 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs) | |||
283 | return regs->ARM_r0; | 283 | return regs->ARM_r0; |
284 | 284 | ||
285 | badframe: | 285 | badframe: |
286 | force_sig(SIGSEGV, current); | 286 | force_sig(SIGSEGV); |
287 | return 0; | 287 | return 0; |
288 | } | 288 | } |
289 | 289 | ||
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index e45d5b440fb1..64abe8450780 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c | |||
@@ -257,7 +257,7 @@ void arm64_force_sig_fault(int signo, int code, void __user *addr, | |||
257 | { | 257 | { |
258 | arm64_show_signal(signo, str); | 258 | arm64_show_signal(signo, str); |
259 | if (signo == SIGKILL) | 259 | if (signo == SIGKILL) |
260 | force_sig(SIGKILL, current); | 260 | force_sig(SIGKILL); |
261 | else | 261 | else |
262 | force_sig_fault(signo, code, addr, current); | 262 | force_sig_fault(signo, code, addr, current); |
263 | } | 263 | } |
diff --git a/arch/c6x/kernel/signal.c b/arch/c6x/kernel/signal.c index 33b9f69c38f7..775de34b233a 100644 --- a/arch/c6x/kernel/signal.c +++ b/arch/c6x/kernel/signal.c | |||
@@ -93,7 +93,7 @@ asmlinkage int do_rt_sigreturn(struct pt_regs *regs) | |||
93 | return regs->a4; | 93 | return regs->a4; |
94 | 94 | ||
95 | badframe: | 95 | badframe: |
96 | force_sig(SIGSEGV, current); | 96 | force_sig(SIGSEGV); |
97 | return 0; | 97 | return 0; |
98 | } | 98 | } |
99 | 99 | ||
diff --git a/arch/csky/kernel/signal.c b/arch/csky/kernel/signal.c index 04a43cfd4e09..7c09adeb58bb 100644 --- a/arch/csky/kernel/signal.c +++ b/arch/csky/kernel/signal.c | |||
@@ -61,7 +61,6 @@ SYSCALL_DEFINE0(rt_sigreturn) | |||
61 | { | 61 | { |
62 | struct pt_regs *regs = current_pt_regs(); | 62 | struct pt_regs *regs = current_pt_regs(); |
63 | struct rt_sigframe __user *frame; | 63 | struct rt_sigframe __user *frame; |
64 | struct task_struct *task; | ||
65 | sigset_t set; | 64 | sigset_t set; |
66 | 65 | ||
67 | /* Always make any pending restarted system calls return -EINTR */ | 66 | /* Always make any pending restarted system calls return -EINTR */ |
@@ -86,8 +85,7 @@ SYSCALL_DEFINE0(rt_sigreturn) | |||
86 | return regs->a0; | 85 | return regs->a0; |
87 | 86 | ||
88 | badframe: | 87 | badframe: |
89 | task = current; | 88 | force_sig(SIGSEGV); |
90 | force_sig(SIGSEGV, task); | ||
91 | return 0; | 89 | return 0; |
92 | } | 90 | } |
93 | 91 | ||
diff --git a/arch/h8300/kernel/ptrace_h.c b/arch/h8300/kernel/ptrace_h.c index f5ff3b794c85..15db45a03b04 100644 --- a/arch/h8300/kernel/ptrace_h.c +++ b/arch/h8300/kernel/ptrace_h.c | |||
@@ -250,7 +250,7 @@ asmlinkage void trace_trap(unsigned long bp) | |||
250 | { | 250 | { |
251 | if ((unsigned long)current->thread.breakinfo.addr == bp) { | 251 | if ((unsigned long)current->thread.breakinfo.addr == bp) { |
252 | user_disable_single_step(current); | 252 | user_disable_single_step(current); |
253 | force_sig(SIGTRAP, current); | 253 | force_sig(SIGTRAP); |
254 | } else | 254 | } else |
255 | force_sig(SIGILL, current); | 255 | force_sig(SIGILL); |
256 | } | 256 | } |
diff --git a/arch/h8300/kernel/ptrace_s.c b/arch/h8300/kernel/ptrace_s.c index c0af930052c0..ee21f37b7ed4 100644 --- a/arch/h8300/kernel/ptrace_s.c +++ b/arch/h8300/kernel/ptrace_s.c | |||
@@ -40,5 +40,5 @@ void user_enable_single_step(struct task_struct *child) | |||
40 | asmlinkage void trace_trap(unsigned long bp) | 40 | asmlinkage void trace_trap(unsigned long bp) |
41 | { | 41 | { |
42 | (void)bp; | 42 | (void)bp; |
43 | force_sig(SIGTRAP, current); | 43 | force_sig(SIGTRAP); |
44 | } | 44 | } |
diff --git a/arch/h8300/kernel/signal.c b/arch/h8300/kernel/signal.c index e0f2b708e5d9..ef7489b7c459 100644 --- a/arch/h8300/kernel/signal.c +++ b/arch/h8300/kernel/signal.c | |||
@@ -126,7 +126,7 @@ asmlinkage int sys_rt_sigreturn(void) | |||
126 | return er0; | 126 | return er0; |
127 | 127 | ||
128 | badframe: | 128 | badframe: |
129 | force_sig(SIGSEGV, current); | 129 | force_sig(SIGSEGV); |
130 | return 0; | 130 | return 0; |
131 | } | 131 | } |
132 | 132 | ||
diff --git a/arch/hexagon/kernel/signal.c b/arch/hexagon/kernel/signal.c index 31e2cf95f189..0433fcbb496c 100644 --- a/arch/hexagon/kernel/signal.c +++ b/arch/hexagon/kernel/signal.c | |||
@@ -265,6 +265,6 @@ asmlinkage int sys_rt_sigreturn(void) | |||
265 | return regs->r00; | 265 | return regs->r00; |
266 | 266 | ||
267 | badframe: | 267 | badframe: |
268 | force_sig(SIGSEGV, current); | 268 | force_sig(SIGSEGV); |
269 | return 0; | 269 | return 0; |
270 | } | 270 | } |
diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c index 91ee04842c22..e634414361df 100644 --- a/arch/hexagon/kernel/traps.c +++ b/arch/hexagon/kernel/traps.c | |||
@@ -252,7 +252,7 @@ int die_if_kernel(char *str, struct pt_regs *regs, long err) | |||
252 | static void misaligned_instruction(struct pt_regs *regs) | 252 | static void misaligned_instruction(struct pt_regs *regs) |
253 | { | 253 | { |
254 | die_if_kernel("Misaligned Instruction", regs, 0); | 254 | die_if_kernel("Misaligned Instruction", regs, 0); |
255 | force_sig(SIGBUS, current); | 255 | force_sig(SIGBUS); |
256 | } | 256 | } |
257 | 257 | ||
258 | /* | 258 | /* |
@@ -263,19 +263,19 @@ static void misaligned_instruction(struct pt_regs *regs) | |||
263 | static void misaligned_data_load(struct pt_regs *regs) | 263 | static void misaligned_data_load(struct pt_regs *regs) |
264 | { | 264 | { |
265 | die_if_kernel("Misaligned Data Load", regs, 0); | 265 | die_if_kernel("Misaligned Data Load", regs, 0); |
266 | force_sig(SIGBUS, current); | 266 | force_sig(SIGBUS); |
267 | } | 267 | } |
268 | 268 | ||
269 | static void misaligned_data_store(struct pt_regs *regs) | 269 | static void misaligned_data_store(struct pt_regs *regs) |
270 | { | 270 | { |
271 | die_if_kernel("Misaligned Data Store", regs, 0); | 271 | die_if_kernel("Misaligned Data Store", regs, 0); |
272 | force_sig(SIGBUS, current); | 272 | force_sig(SIGBUS); |
273 | } | 273 | } |
274 | 274 | ||
275 | static void illegal_instruction(struct pt_regs *regs) | 275 | static void illegal_instruction(struct pt_regs *regs) |
276 | { | 276 | { |
277 | die_if_kernel("Illegal Instruction", regs, 0); | 277 | die_if_kernel("Illegal Instruction", regs, 0); |
278 | force_sig(SIGILL, current); | 278 | force_sig(SIGILL); |
279 | } | 279 | } |
280 | 280 | ||
281 | /* | 281 | /* |
@@ -285,7 +285,7 @@ static void illegal_instruction(struct pt_regs *regs) | |||
285 | static void precise_bus_error(struct pt_regs *regs) | 285 | static void precise_bus_error(struct pt_regs *regs) |
286 | { | 286 | { |
287 | die_if_kernel("Precise Bus Error", regs, 0); | 287 | die_if_kernel("Precise Bus Error", regs, 0); |
288 | force_sig(SIGBUS, current); | 288 | force_sig(SIGBUS); |
289 | } | 289 | } |
290 | 290 | ||
291 | /* | 291 | /* |
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c index 518cceb5d4af..e5044aed9452 100644 --- a/arch/ia64/kernel/signal.c +++ b/arch/ia64/kernel/signal.c | |||
@@ -152,7 +152,7 @@ ia64_rt_sigreturn (struct sigscratch *scr) | |||
152 | return retval; | 152 | return retval; |
153 | 153 | ||
154 | give_sigsegv: | 154 | give_sigsegv: |
155 | force_sig(SIGSEGV, current); | 155 | force_sig(SIGSEGV); |
156 | return retval; | 156 | return retval; |
157 | } | 157 | } |
158 | 158 | ||
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index 85d8616ac4f6..0a3adbfebc2a 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c | |||
@@ -589,14 +589,14 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa, | |||
589 | printk(KERN_ERR "Unexpected IA-32 exception (Trap 45)\n"); | 589 | printk(KERN_ERR "Unexpected IA-32 exception (Trap 45)\n"); |
590 | printk(KERN_ERR " iip - 0x%lx, ifa - 0x%lx, isr - 0x%lx\n", | 590 | printk(KERN_ERR " iip - 0x%lx, ifa - 0x%lx, isr - 0x%lx\n", |
591 | iip, ifa, isr); | 591 | iip, ifa, isr); |
592 | force_sig(SIGSEGV, current); | 592 | force_sig(SIGSEGV); |
593 | return; | 593 | return; |
594 | 594 | ||
595 | case 46: | 595 | case 46: |
596 | printk(KERN_ERR "Unexpected IA-32 intercept trap (Trap 46)\n"); | 596 | printk(KERN_ERR "Unexpected IA-32 intercept trap (Trap 46)\n"); |
597 | printk(KERN_ERR " iip - 0x%lx, ifa - 0x%lx, isr - 0x%lx, iim - 0x%lx\n", | 597 | printk(KERN_ERR " iip - 0x%lx, ifa - 0x%lx, isr - 0x%lx, iim - 0x%lx\n", |
598 | iip, ifa, isr, iim); | 598 | iip, ifa, isr, iim); |
599 | force_sig(SIGSEGV, current); | 599 | force_sig(SIGSEGV); |
600 | return; | 600 | return; |
601 | 601 | ||
602 | case 47: | 602 | case 47: |
@@ -608,5 +608,5 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa, | |||
608 | break; | 608 | break; |
609 | } | 609 | } |
610 | if (!die_if_kernel(buf, ®s, error)) | 610 | if (!die_if_kernel(buf, ®s, error)) |
611 | force_sig(SIGILL, current); | 611 | force_sig(SIGILL); |
612 | } | 612 | } |
diff --git a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c index 87e7f3639839..05610e6924c1 100644 --- a/arch/m68k/kernel/signal.c +++ b/arch/m68k/kernel/signal.c | |||
@@ -803,7 +803,7 @@ asmlinkage int do_sigreturn(struct pt_regs *regs, struct switch_stack *sw) | |||
803 | return regs->d0; | 803 | return regs->d0; |
804 | 804 | ||
805 | badframe: | 805 | badframe: |
806 | force_sig(SIGSEGV, current); | 806 | force_sig(SIGSEGV); |
807 | return 0; | 807 | return 0; |
808 | } | 808 | } |
809 | 809 | ||
@@ -825,7 +825,7 @@ asmlinkage int do_rt_sigreturn(struct pt_regs *regs, struct switch_stack *sw) | |||
825 | return regs->d0; | 825 | return regs->d0; |
826 | 826 | ||
827 | badframe: | 827 | badframe: |
828 | force_sig(SIGSEGV, current); | 828 | force_sig(SIGSEGV); |
829 | return 0; | 829 | return 0; |
830 | } | 830 | } |
831 | 831 | ||
diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index b2fd000b9285..2b6e143abd73 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c | |||
@@ -431,7 +431,7 @@ static inline void bus_error030 (struct frame *fp) | |||
431 | pr_err("BAD KERNEL BUSERR\n"); | 431 | pr_err("BAD KERNEL BUSERR\n"); |
432 | 432 | ||
433 | die_if_kernel("Oops", &fp->ptregs,0); | 433 | die_if_kernel("Oops", &fp->ptregs,0); |
434 | force_sig(SIGKILL, current); | 434 | force_sig(SIGKILL); |
435 | return; | 435 | return; |
436 | } | 436 | } |
437 | } else { | 437 | } else { |
@@ -463,7 +463,7 @@ static inline void bus_error030 (struct frame *fp) | |||
463 | !(ssw & RW) ? "write" : "read", addr, | 463 | !(ssw & RW) ? "write" : "read", addr, |
464 | fp->ptregs.pc); | 464 | fp->ptregs.pc); |
465 | die_if_kernel ("Oops", &fp->ptregs, buserr_type); | 465 | die_if_kernel ("Oops", &fp->ptregs, buserr_type); |
466 | force_sig (SIGBUS, current); | 466 | force_sig (SIGBUS); |
467 | return; | 467 | return; |
468 | } | 468 | } |
469 | 469 | ||
@@ -493,7 +493,7 @@ static inline void bus_error030 (struct frame *fp) | |||
493 | do_page_fault (&fp->ptregs, addr, 0); | 493 | do_page_fault (&fp->ptregs, addr, 0); |
494 | } else { | 494 | } else { |
495 | pr_debug("protection fault on insn access (segv).\n"); | 495 | pr_debug("protection fault on insn access (segv).\n"); |
496 | force_sig (SIGSEGV, current); | 496 | force_sig (SIGSEGV); |
497 | } | 497 | } |
498 | } | 498 | } |
499 | #else | 499 | #else |
@@ -571,7 +571,7 @@ static inline void bus_error030 (struct frame *fp) | |||
571 | !(ssw & RW) ? "write" : "read", addr, | 571 | !(ssw & RW) ? "write" : "read", addr, |
572 | fp->ptregs.pc); | 572 | fp->ptregs.pc); |
573 | die_if_kernel("Oops",&fp->ptregs,mmusr); | 573 | die_if_kernel("Oops",&fp->ptregs,mmusr); |
574 | force_sig(SIGSEGV, current); | 574 | force_sig(SIGSEGV); |
575 | return; | 575 | return; |
576 | } else { | 576 | } else { |
577 | #if 0 | 577 | #if 0 |
@@ -598,7 +598,7 @@ static inline void bus_error030 (struct frame *fp) | |||
598 | #endif | 598 | #endif |
599 | pr_debug("Unknown SIGSEGV - 1\n"); | 599 | pr_debug("Unknown SIGSEGV - 1\n"); |
600 | die_if_kernel("Oops",&fp->ptregs,mmusr); | 600 | die_if_kernel("Oops",&fp->ptregs,mmusr); |
601 | force_sig(SIGSEGV, current); | 601 | force_sig(SIGSEGV); |
602 | return; | 602 | return; |
603 | } | 603 | } |
604 | 604 | ||
@@ -621,7 +621,7 @@ static inline void bus_error030 (struct frame *fp) | |||
621 | buserr: | 621 | buserr: |
622 | pr_err("BAD KERNEL BUSERR\n"); | 622 | pr_err("BAD KERNEL BUSERR\n"); |
623 | die_if_kernel("Oops",&fp->ptregs,0); | 623 | die_if_kernel("Oops",&fp->ptregs,0); |
624 | force_sig(SIGKILL, current); | 624 | force_sig(SIGKILL); |
625 | return; | 625 | return; |
626 | } | 626 | } |
627 | 627 | ||
@@ -660,7 +660,7 @@ static inline void bus_error030 (struct frame *fp) | |||
660 | addr, fp->ptregs.pc); | 660 | addr, fp->ptregs.pc); |
661 | pr_debug("Unknown SIGSEGV - 2\n"); | 661 | pr_debug("Unknown SIGSEGV - 2\n"); |
662 | die_if_kernel("Oops",&fp->ptregs,mmusr); | 662 | die_if_kernel("Oops",&fp->ptregs,mmusr); |
663 | force_sig(SIGSEGV, current); | 663 | force_sig(SIGSEGV); |
664 | return; | 664 | return; |
665 | } | 665 | } |
666 | 666 | ||
@@ -804,7 +804,7 @@ asmlinkage void buserr_c(struct frame *fp) | |||
804 | default: | 804 | default: |
805 | die_if_kernel("bad frame format",&fp->ptregs,0); | 805 | die_if_kernel("bad frame format",&fp->ptregs,0); |
806 | pr_debug("Unknown SIGSEGV - 4\n"); | 806 | pr_debug("Unknown SIGSEGV - 4\n"); |
807 | force_sig(SIGSEGV, current); | 807 | force_sig(SIGSEGV); |
808 | } | 808 | } |
809 | } | 809 | } |
810 | 810 | ||
diff --git a/arch/microblaze/kernel/signal.c b/arch/microblaze/kernel/signal.c index 0685696349bb..cdd4feb279c5 100644 --- a/arch/microblaze/kernel/signal.c +++ b/arch/microblaze/kernel/signal.c | |||
@@ -108,7 +108,7 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs) | |||
108 | return rval; | 108 | return rval; |
109 | 109 | ||
110 | badframe: | 110 | badframe: |
111 | force_sig(SIGSEGV, current); | 111 | force_sig(SIGSEGV); |
112 | return 0; | 112 | return 0; |
113 | } | 113 | } |
114 | 114 | ||
diff --git a/arch/mips/kernel/branch.c b/arch/mips/kernel/branch.c index 180ad081afcf..1db29957a931 100644 --- a/arch/mips/kernel/branch.c +++ b/arch/mips/kernel/branch.c | |||
@@ -32,7 +32,7 @@ int __isa_exception_epc(struct pt_regs *regs) | |||
32 | /* Calculate exception PC in branch delay slot. */ | 32 | /* Calculate exception PC in branch delay slot. */ |
33 | if (__get_user(inst, (u16 __user *) msk_isa16_mode(epc))) { | 33 | if (__get_user(inst, (u16 __user *) msk_isa16_mode(epc))) { |
34 | /* This should never happen because delay slot was checked. */ | 34 | /* This should never happen because delay slot was checked. */ |
35 | force_sig(SIGSEGV, current); | 35 | force_sig(SIGSEGV); |
36 | return epc; | 36 | return epc; |
37 | } | 37 | } |
38 | if (cpu_has_mips16) { | 38 | if (cpu_has_mips16) { |
@@ -305,7 +305,7 @@ int __microMIPS_compute_return_epc(struct pt_regs *regs) | |||
305 | return 0; | 305 | return 0; |
306 | 306 | ||
307 | sigsegv: | 307 | sigsegv: |
308 | force_sig(SIGSEGV, current); | 308 | force_sig(SIGSEGV); |
309 | return -EFAULT; | 309 | return -EFAULT; |
310 | } | 310 | } |
311 | 311 | ||
@@ -328,7 +328,7 @@ int __MIPS16e_compute_return_epc(struct pt_regs *regs) | |||
328 | /* Read the instruction. */ | 328 | /* Read the instruction. */ |
329 | addr = (u16 __user *)msk_isa16_mode(epc); | 329 | addr = (u16 __user *)msk_isa16_mode(epc); |
330 | if (__get_user(inst.full, addr)) { | 330 | if (__get_user(inst.full, addr)) { |
331 | force_sig(SIGSEGV, current); | 331 | force_sig(SIGSEGV); |
332 | return -EFAULT; | 332 | return -EFAULT; |
333 | } | 333 | } |
334 | 334 | ||
@@ -343,7 +343,7 @@ int __MIPS16e_compute_return_epc(struct pt_regs *regs) | |||
343 | case MIPS16e_jal_op: | 343 | case MIPS16e_jal_op: |
344 | addr += 1; | 344 | addr += 1; |
345 | if (__get_user(inst2, addr)) { | 345 | if (__get_user(inst2, addr)) { |
346 | force_sig(SIGSEGV, current); | 346 | force_sig(SIGSEGV); |
347 | return -EFAULT; | 347 | return -EFAULT; |
348 | } | 348 | } |
349 | fullinst = ((unsigned)inst.full << 16) | inst2; | 349 | fullinst = ((unsigned)inst.full << 16) | inst2; |
@@ -829,17 +829,17 @@ int __compute_return_epc_for_insn(struct pt_regs *regs, | |||
829 | sigill_dsp: | 829 | sigill_dsp: |
830 | pr_debug("%s: DSP branch but not DSP ASE - sending SIGILL.\n", | 830 | pr_debug("%s: DSP branch but not DSP ASE - sending SIGILL.\n", |
831 | current->comm); | 831 | current->comm); |
832 | force_sig(SIGILL, current); | 832 | force_sig(SIGILL); |
833 | return -EFAULT; | 833 | return -EFAULT; |
834 | sigill_r2r6: | 834 | sigill_r2r6: |
835 | pr_debug("%s: R2 branch but r2-to-r6 emulator is not present - sending SIGILL.\n", | 835 | pr_debug("%s: R2 branch but r2-to-r6 emulator is not present - sending SIGILL.\n", |
836 | current->comm); | 836 | current->comm); |
837 | force_sig(SIGILL, current); | 837 | force_sig(SIGILL); |
838 | return -EFAULT; | 838 | return -EFAULT; |
839 | sigill_r6: | 839 | sigill_r6: |
840 | pr_debug("%s: R6 branch but no MIPSr6 ISA support - sending SIGILL.\n", | 840 | pr_debug("%s: R6 branch but no MIPSr6 ISA support - sending SIGILL.\n", |
841 | current->comm); | 841 | current->comm); |
842 | force_sig(SIGILL, current); | 842 | force_sig(SIGILL); |
843 | return -EFAULT; | 843 | return -EFAULT; |
844 | } | 844 | } |
845 | EXPORT_SYMBOL_GPL(__compute_return_epc_for_insn); | 845 | EXPORT_SYMBOL_GPL(__compute_return_epc_for_insn); |
@@ -859,7 +859,7 @@ int __compute_return_epc(struct pt_regs *regs) | |||
859 | */ | 859 | */ |
860 | addr = (unsigned int __user *) epc; | 860 | addr = (unsigned int __user *) epc; |
861 | if (__get_user(insn.word, addr)) { | 861 | if (__get_user(insn.word, addr)) { |
862 | force_sig(SIGSEGV, current); | 862 | force_sig(SIGSEGV); |
863 | return -EFAULT; | 863 | return -EFAULT; |
864 | } | 864 | } |
865 | 865 | ||
@@ -867,7 +867,7 @@ int __compute_return_epc(struct pt_regs *regs) | |||
867 | 867 | ||
868 | unaligned: | 868 | unaligned: |
869 | printk("%s: unaligned epc - sending SIGBUS.\n", current->comm); | 869 | printk("%s: unaligned epc - sending SIGBUS.\n", current->comm); |
870 | force_sig(SIGBUS, current); | 870 | force_sig(SIGBUS); |
871 | return -EFAULT; | 871 | return -EFAULT; |
872 | } | 872 | } |
873 | 873 | ||
diff --git a/arch/mips/kernel/kprobes.c b/arch/mips/kernel/kprobes.c index 54cd675c5d1d..62af3ed65794 100644 --- a/arch/mips/kernel/kprobes.c +++ b/arch/mips/kernel/kprobes.c | |||
@@ -232,7 +232,7 @@ static int evaluate_branch_instruction(struct kprobe *p, struct pt_regs *regs, | |||
232 | 232 | ||
233 | unaligned: | 233 | unaligned: |
234 | pr_notice("%s: unaligned epc - sending SIGBUS.\n", current->comm); | 234 | pr_notice("%s: unaligned epc - sending SIGBUS.\n", current->comm); |
235 | force_sig(SIGBUS, current); | 235 | force_sig(SIGBUS); |
236 | return -EFAULT; | 236 | return -EFAULT; |
237 | 237 | ||
238 | } | 238 | } |
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c index d75337974ee9..f6efabcb4e92 100644 --- a/arch/mips/kernel/signal.c +++ b/arch/mips/kernel/signal.c | |||
@@ -641,7 +641,7 @@ asmlinkage void sys_sigreturn(void) | |||
641 | if (sig < 0) | 641 | if (sig < 0) |
642 | goto badframe; | 642 | goto badframe; |
643 | else if (sig) | 643 | else if (sig) |
644 | force_sig(sig, current); | 644 | force_sig(sig); |
645 | 645 | ||
646 | /* | 646 | /* |
647 | * Don't let your children do this ... | 647 | * Don't let your children do this ... |
@@ -654,7 +654,7 @@ asmlinkage void sys_sigreturn(void) | |||
654 | /* Unreached */ | 654 | /* Unreached */ |
655 | 655 | ||
656 | badframe: | 656 | badframe: |
657 | force_sig(SIGSEGV, current); | 657 | force_sig(SIGSEGV); |
658 | } | 658 | } |
659 | #endif /* CONFIG_TRAD_SIGNALS */ | 659 | #endif /* CONFIG_TRAD_SIGNALS */ |
660 | 660 | ||
@@ -678,7 +678,7 @@ asmlinkage void sys_rt_sigreturn(void) | |||
678 | if (sig < 0) | 678 | if (sig < 0) |
679 | goto badframe; | 679 | goto badframe; |
680 | else if (sig) | 680 | else if (sig) |
681 | force_sig(sig, current); | 681 | force_sig(sig); |
682 | 682 | ||
683 | if (restore_altstack(&frame->rs_uc.uc_stack)) | 683 | if (restore_altstack(&frame->rs_uc.uc_stack)) |
684 | goto badframe; | 684 | goto badframe; |
@@ -694,7 +694,7 @@ asmlinkage void sys_rt_sigreturn(void) | |||
694 | /* Unreached */ | 694 | /* Unreached */ |
695 | 695 | ||
696 | badframe: | 696 | badframe: |
697 | force_sig(SIGSEGV, current); | 697 | force_sig(SIGSEGV); |
698 | } | 698 | } |
699 | 699 | ||
700 | #ifdef CONFIG_TRAD_SIGNALS | 700 | #ifdef CONFIG_TRAD_SIGNALS |
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c index c498b027823e..a7601e862261 100644 --- a/arch/mips/kernel/signal_n32.c +++ b/arch/mips/kernel/signal_n32.c | |||
@@ -84,7 +84,7 @@ asmlinkage void sysn32_rt_sigreturn(void) | |||
84 | if (sig < 0) | 84 | if (sig < 0) |
85 | goto badframe; | 85 | goto badframe; |
86 | else if (sig) | 86 | else if (sig) |
87 | force_sig(sig, current); | 87 | force_sig(sig); |
88 | 88 | ||
89 | if (compat_restore_altstack(&frame->rs_uc.uc_stack)) | 89 | if (compat_restore_altstack(&frame->rs_uc.uc_stack)) |
90 | goto badframe; | 90 | goto badframe; |
@@ -100,7 +100,7 @@ asmlinkage void sysn32_rt_sigreturn(void) | |||
100 | /* Unreached */ | 100 | /* Unreached */ |
101 | 101 | ||
102 | badframe: | 102 | badframe: |
103 | force_sig(SIGSEGV, current); | 103 | force_sig(SIGSEGV); |
104 | } | 104 | } |
105 | 105 | ||
106 | static int setup_rt_frame_n32(void *sig_return, struct ksignal *ksig, | 106 | static int setup_rt_frame_n32(void *sig_return, struct ksignal *ksig, |
diff --git a/arch/mips/kernel/signal_o32.c b/arch/mips/kernel/signal_o32.c index df259618e834..299a7a28ca33 100644 --- a/arch/mips/kernel/signal_o32.c +++ b/arch/mips/kernel/signal_o32.c | |||
@@ -171,7 +171,7 @@ asmlinkage void sys32_rt_sigreturn(void) | |||
171 | if (sig < 0) | 171 | if (sig < 0) |
172 | goto badframe; | 172 | goto badframe; |
173 | else if (sig) | 173 | else if (sig) |
174 | force_sig(sig, current); | 174 | force_sig(sig); |
175 | 175 | ||
176 | if (compat_restore_altstack(&frame->rs_uc.uc_stack)) | 176 | if (compat_restore_altstack(&frame->rs_uc.uc_stack)) |
177 | goto badframe; | 177 | goto badframe; |
@@ -187,7 +187,7 @@ asmlinkage void sys32_rt_sigreturn(void) | |||
187 | /* Unreached */ | 187 | /* Unreached */ |
188 | 188 | ||
189 | badframe: | 189 | badframe: |
190 | force_sig(SIGSEGV, current); | 190 | force_sig(SIGSEGV); |
191 | } | 191 | } |
192 | 192 | ||
193 | static int setup_rt_frame_32(void *sig_return, struct ksignal *ksig, | 193 | static int setup_rt_frame_32(void *sig_return, struct ksignal *ksig, |
@@ -273,7 +273,7 @@ asmlinkage void sys32_sigreturn(void) | |||
273 | if (sig < 0) | 273 | if (sig < 0) |
274 | goto badframe; | 274 | goto badframe; |
275 | else if (sig) | 275 | else if (sig) |
276 | force_sig(sig, current); | 276 | force_sig(sig); |
277 | 277 | ||
278 | /* | 278 | /* |
279 | * Don't let your children do this ... | 279 | * Don't let your children do this ... |
@@ -286,5 +286,5 @@ asmlinkage void sys32_sigreturn(void) | |||
286 | /* Unreached */ | 286 | /* Unreached */ |
287 | 287 | ||
288 | badframe: | 288 | badframe: |
289 | force_sig(SIGSEGV, current); | 289 | force_sig(SIGSEGV); |
290 | } | 290 | } |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index c52766a5b85f..a6031b045b95 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -482,7 +482,7 @@ asmlinkage void do_be(struct pt_regs *regs) | |||
482 | goto out; | 482 | goto out; |
483 | 483 | ||
484 | die_if_kernel("Oops", regs); | 484 | die_if_kernel("Oops", regs); |
485 | force_sig(SIGBUS, current); | 485 | force_sig(SIGBUS); |
486 | 486 | ||
487 | out: | 487 | out: |
488 | exception_exit(prev_state); | 488 | exception_exit(prev_state); |
@@ -765,7 +765,7 @@ int process_fpemu_return(int sig, void __user *fault_addr, unsigned long fcr31) | |||
765 | return 1; | 765 | return 1; |
766 | 766 | ||
767 | default: | 767 | default: |
768 | force_sig(sig, current); | 768 | force_sig(sig); |
769 | return 1; | 769 | return 1; |
770 | } | 770 | } |
771 | } | 771 | } |
@@ -947,7 +947,7 @@ void do_trap_or_bp(struct pt_regs *regs, unsigned int code, int si_code, | |||
947 | break; | 947 | break; |
948 | case BRK_BUG: | 948 | case BRK_BUG: |
949 | die_if_kernel("Kernel bug detected", regs); | 949 | die_if_kernel("Kernel bug detected", regs); |
950 | force_sig(SIGTRAP, current); | 950 | force_sig(SIGTRAP); |
951 | break; | 951 | break; |
952 | case BRK_MEMU: | 952 | case BRK_MEMU: |
953 | /* | 953 | /* |
@@ -962,7 +962,7 @@ void do_trap_or_bp(struct pt_regs *regs, unsigned int code, int si_code, | |||
962 | return; | 962 | return; |
963 | 963 | ||
964 | die_if_kernel("Math emu break/trap", regs); | 964 | die_if_kernel("Math emu break/trap", regs); |
965 | force_sig(SIGTRAP, current); | 965 | force_sig(SIGTRAP); |
966 | break; | 966 | break; |
967 | default: | 967 | default: |
968 | scnprintf(b, sizeof(b), "%s instruction in kernel code", str); | 968 | 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, | |||
970 | if (si_code) { | 970 | if (si_code) { |
971 | force_sig_fault(SIGTRAP, si_code, NULL, current); | 971 | force_sig_fault(SIGTRAP, si_code, NULL, current); |
972 | } else { | 972 | } else { |
973 | force_sig(SIGTRAP, current); | 973 | force_sig(SIGTRAP); |
974 | } | 974 | } |
975 | } | 975 | } |
976 | } | 976 | } |
@@ -1063,7 +1063,7 @@ out: | |||
1063 | return; | 1063 | return; |
1064 | 1064 | ||
1065 | out_sigsegv: | 1065 | out_sigsegv: |
1066 | force_sig(SIGSEGV, current); | 1066 | force_sig(SIGSEGV); |
1067 | goto out; | 1067 | goto out; |
1068 | } | 1068 | } |
1069 | 1069 | ||
@@ -1105,7 +1105,7 @@ out: | |||
1105 | return; | 1105 | return; |
1106 | 1106 | ||
1107 | out_sigsegv: | 1107 | out_sigsegv: |
1108 | force_sig(SIGSEGV, current); | 1108 | force_sig(SIGSEGV); |
1109 | goto out; | 1109 | goto out; |
1110 | } | 1110 | } |
1111 | 1111 | ||
@@ -1191,7 +1191,7 @@ no_r2_instr: | |||
1191 | if (unlikely(status > 0)) { | 1191 | if (unlikely(status > 0)) { |
1192 | regs->cp0_epc = old_epc; /* Undo skip-over. */ | 1192 | regs->cp0_epc = old_epc; /* Undo skip-over. */ |
1193 | regs->regs[31] = old31; | 1193 | regs->regs[31] = old31; |
1194 | force_sig(status, current); | 1194 | force_sig(status); |
1195 | } | 1195 | } |
1196 | 1196 | ||
1197 | out: | 1197 | out: |
@@ -1220,7 +1220,7 @@ static int default_cu2_call(struct notifier_block *nfb, unsigned long action, | |||
1220 | 1220 | ||
1221 | die_if_kernel("COP2: Unhandled kernel unaligned access or invalid " | 1221 | die_if_kernel("COP2: Unhandled kernel unaligned access or invalid " |
1222 | "instruction", regs); | 1222 | "instruction", regs); |
1223 | force_sig(SIGILL, current); | 1223 | force_sig(SIGILL); |
1224 | 1224 | ||
1225 | return NOTIFY_OK; | 1225 | return NOTIFY_OK; |
1226 | } | 1226 | } |
@@ -1383,7 +1383,7 @@ asmlinkage void do_cpu(struct pt_regs *regs) | |||
1383 | if (unlikely(status > 0)) { | 1383 | if (unlikely(status > 0)) { |
1384 | regs->cp0_epc = old_epc; /* Undo skip-over. */ | 1384 | regs->cp0_epc = old_epc; /* Undo skip-over. */ |
1385 | regs->regs[31] = old31; | 1385 | regs->regs[31] = old31; |
1386 | force_sig(status, current); | 1386 | force_sig(status); |
1387 | } | 1387 | } |
1388 | 1388 | ||
1389 | break; | 1389 | break; |
@@ -1403,7 +1403,7 @@ asmlinkage void do_cpu(struct pt_regs *regs) | |||
1403 | * emulator too. | 1403 | * emulator too. |
1404 | */ | 1404 | */ |
1405 | if (raw_cpu_has_fpu || !cpu_has_mips_4_5_64_r2_r6) { | 1405 | if (raw_cpu_has_fpu || !cpu_has_mips_4_5_64_r2_r6) { |
1406 | force_sig(SIGILL, current); | 1406 | force_sig(SIGILL); |
1407 | break; | 1407 | break; |
1408 | } | 1408 | } |
1409 | /* Fall through. */ | 1409 | /* Fall through. */ |
@@ -1437,7 +1437,7 @@ asmlinkage void do_cpu(struct pt_regs *regs) | |||
1437 | #else /* CONFIG_MIPS_FP_SUPPORT */ | 1437 | #else /* CONFIG_MIPS_FP_SUPPORT */ |
1438 | case 1: | 1438 | case 1: |
1439 | case 3: | 1439 | case 3: |
1440 | force_sig(SIGILL, current); | 1440 | force_sig(SIGILL); |
1441 | break; | 1441 | break; |
1442 | #endif /* CONFIG_MIPS_FP_SUPPORT */ | 1442 | #endif /* CONFIG_MIPS_FP_SUPPORT */ |
1443 | 1443 | ||
@@ -1464,7 +1464,7 @@ asmlinkage void do_msa_fpe(struct pt_regs *regs, unsigned int msacsr) | |||
1464 | local_irq_enable(); | 1464 | local_irq_enable(); |
1465 | 1465 | ||
1466 | die_if_kernel("do_msa_fpe invoked from kernel context!", regs); | 1466 | die_if_kernel("do_msa_fpe invoked from kernel context!", regs); |
1467 | force_sig(SIGFPE, current); | 1467 | force_sig(SIGFPE); |
1468 | out: | 1468 | out: |
1469 | exception_exit(prev_state); | 1469 | exception_exit(prev_state); |
1470 | } | 1470 | } |
@@ -1477,7 +1477,7 @@ asmlinkage void do_msa(struct pt_regs *regs) | |||
1477 | prev_state = exception_enter(); | 1477 | prev_state = exception_enter(); |
1478 | 1478 | ||
1479 | if (!cpu_has_msa || test_thread_flag(TIF_32BIT_FPREGS)) { | 1479 | if (!cpu_has_msa || test_thread_flag(TIF_32BIT_FPREGS)) { |
1480 | force_sig(SIGILL, current); | 1480 | force_sig(SIGILL); |
1481 | goto out; | 1481 | goto out; |
1482 | } | 1482 | } |
1483 | 1483 | ||
@@ -1485,7 +1485,7 @@ asmlinkage void do_msa(struct pt_regs *regs) | |||
1485 | 1485 | ||
1486 | err = enable_restore_fp_context(1); | 1486 | err = enable_restore_fp_context(1); |
1487 | if (err) | 1487 | if (err) |
1488 | force_sig(SIGILL, current); | 1488 | force_sig(SIGILL); |
1489 | out: | 1489 | out: |
1490 | exception_exit(prev_state); | 1490 | exception_exit(prev_state); |
1491 | } | 1491 | } |
@@ -1495,7 +1495,7 @@ asmlinkage void do_mdmx(struct pt_regs *regs) | |||
1495 | enum ctx_state prev_state; | 1495 | enum ctx_state prev_state; |
1496 | 1496 | ||
1497 | prev_state = exception_enter(); | 1497 | prev_state = exception_enter(); |
1498 | force_sig(SIGILL, current); | 1498 | force_sig(SIGILL); |
1499 | exception_exit(prev_state); | 1499 | exception_exit(prev_state); |
1500 | } | 1500 | } |
1501 | 1501 | ||
@@ -1592,7 +1592,7 @@ asmlinkage void do_mt(struct pt_regs *regs) | |||
1592 | } | 1592 | } |
1593 | die_if_kernel("MIPS MT Thread exception in kernel", regs); | 1593 | die_if_kernel("MIPS MT Thread exception in kernel", regs); |
1594 | 1594 | ||
1595 | force_sig(SIGILL, current); | 1595 | force_sig(SIGILL); |
1596 | } | 1596 | } |
1597 | 1597 | ||
1598 | 1598 | ||
@@ -1601,7 +1601,7 @@ asmlinkage void do_dsp(struct pt_regs *regs) | |||
1601 | if (cpu_has_dsp) | 1601 | if (cpu_has_dsp) |
1602 | panic("Unexpected DSP exception"); | 1602 | panic("Unexpected DSP exception"); |
1603 | 1603 | ||
1604 | force_sig(SIGILL, current); | 1604 | force_sig(SIGILL); |
1605 | } | 1605 | } |
1606 | 1606 | ||
1607 | asmlinkage void do_reserved(struct pt_regs *regs) | 1607 | asmlinkage void do_reserved(struct pt_regs *regs) |
diff --git a/arch/mips/kernel/unaligned.c b/arch/mips/kernel/unaligned.c index 76e33f940971..92bd2b0f0548 100644 --- a/arch/mips/kernel/unaligned.c +++ b/arch/mips/kernel/unaligned.c | |||
@@ -1365,20 +1365,20 @@ fault: | |||
1365 | return; | 1365 | return; |
1366 | 1366 | ||
1367 | die_if_kernel("Unhandled kernel unaligned access", regs); | 1367 | die_if_kernel("Unhandled kernel unaligned access", regs); |
1368 | force_sig(SIGSEGV, current); | 1368 | force_sig(SIGSEGV); |
1369 | 1369 | ||
1370 | return; | 1370 | return; |
1371 | 1371 | ||
1372 | sigbus: | 1372 | sigbus: |
1373 | die_if_kernel("Unhandled kernel unaligned access", regs); | 1373 | die_if_kernel("Unhandled kernel unaligned access", regs); |
1374 | force_sig(SIGBUS, current); | 1374 | force_sig(SIGBUS); |
1375 | 1375 | ||
1376 | return; | 1376 | return; |
1377 | 1377 | ||
1378 | sigill: | 1378 | sigill: |
1379 | die_if_kernel | 1379 | die_if_kernel |
1380 | ("Unhandled kernel unaligned access or invalid instruction", regs); | 1380 | ("Unhandled kernel unaligned access or invalid instruction", regs); |
1381 | force_sig(SIGILL, current); | 1381 | force_sig(SIGILL); |
1382 | } | 1382 | } |
1383 | 1383 | ||
1384 | /* Recode table from 16-bit register notation to 32-bit GPR. */ | 1384 | /* Recode table from 16-bit register notation to 32-bit GPR. */ |
@@ -1991,20 +1991,20 @@ fault: | |||
1991 | return; | 1991 | return; |
1992 | 1992 | ||
1993 | die_if_kernel("Unhandled kernel unaligned access", regs); | 1993 | die_if_kernel("Unhandled kernel unaligned access", regs); |
1994 | force_sig(SIGSEGV, current); | 1994 | force_sig(SIGSEGV); |
1995 | 1995 | ||
1996 | return; | 1996 | return; |
1997 | 1997 | ||
1998 | sigbus: | 1998 | sigbus: |
1999 | die_if_kernel("Unhandled kernel unaligned access", regs); | 1999 | die_if_kernel("Unhandled kernel unaligned access", regs); |
2000 | force_sig(SIGBUS, current); | 2000 | force_sig(SIGBUS); |
2001 | 2001 | ||
2002 | return; | 2002 | return; |
2003 | 2003 | ||
2004 | sigill: | 2004 | sigill: |
2005 | die_if_kernel | 2005 | die_if_kernel |
2006 | ("Unhandled kernel unaligned access or invalid instruction", regs); | 2006 | ("Unhandled kernel unaligned access or invalid instruction", regs); |
2007 | force_sig(SIGILL, current); | 2007 | force_sig(SIGILL); |
2008 | } | 2008 | } |
2009 | 2009 | ||
2010 | static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr) | 2010 | static void emulate_load_store_MIPS16e(struct pt_regs *regs, void __user * addr) |
@@ -2271,20 +2271,20 @@ fault: | |||
2271 | return; | 2271 | return; |
2272 | 2272 | ||
2273 | die_if_kernel("Unhandled kernel unaligned access", regs); | 2273 | die_if_kernel("Unhandled kernel unaligned access", regs); |
2274 | force_sig(SIGSEGV, current); | 2274 | force_sig(SIGSEGV); |
2275 | 2275 | ||
2276 | return; | 2276 | return; |
2277 | 2277 | ||
2278 | sigbus: | 2278 | sigbus: |
2279 | die_if_kernel("Unhandled kernel unaligned access", regs); | 2279 | die_if_kernel("Unhandled kernel unaligned access", regs); |
2280 | force_sig(SIGBUS, current); | 2280 | force_sig(SIGBUS); |
2281 | 2281 | ||
2282 | return; | 2282 | return; |
2283 | 2283 | ||
2284 | sigill: | 2284 | sigill: |
2285 | die_if_kernel | 2285 | die_if_kernel |
2286 | ("Unhandled kernel unaligned access or invalid instruction", regs); | 2286 | ("Unhandled kernel unaligned access or invalid instruction", regs); |
2287 | force_sig(SIGILL, current); | 2287 | force_sig(SIGILL); |
2288 | } | 2288 | } |
2289 | 2289 | ||
2290 | asmlinkage void do_ade(struct pt_regs *regs) | 2290 | asmlinkage void do_ade(struct pt_regs *regs) |
@@ -2364,7 +2364,7 @@ asmlinkage void do_ade(struct pt_regs *regs) | |||
2364 | 2364 | ||
2365 | sigbus: | 2365 | sigbus: |
2366 | die_if_kernel("Kernel unaligned instruction access", regs); | 2366 | die_if_kernel("Kernel unaligned instruction access", regs); |
2367 | force_sig(SIGBUS, current); | 2367 | force_sig(SIGBUS); |
2368 | 2368 | ||
2369 | /* | 2369 | /* |
2370 | * XXX On return from the signal handler we should advance the epc | 2370 | * XXX On return from the signal handler we should advance the epc |
diff --git a/arch/mips/sgi-ip22/ip22-berr.c b/arch/mips/sgi-ip22/ip22-berr.c index 34bb9801d5ff..dc0110a607a5 100644 --- a/arch/mips/sgi-ip22/ip22-berr.c +++ b/arch/mips/sgi-ip22/ip22-berr.c | |||
@@ -98,7 +98,7 @@ void ip22_be_interrupt(int irq) | |||
98 | field, regs->cp0_epc, field, regs->regs[31]); | 98 | field, regs->cp0_epc, field, regs->regs[31]); |
99 | /* Assume it would be too dangerous to continue ... */ | 99 | /* Assume it would be too dangerous to continue ... */ |
100 | die_if_kernel("Oops", regs); | 100 | die_if_kernel("Oops", regs); |
101 | force_sig(SIGBUS, current); | 101 | force_sig(SIGBUS); |
102 | } | 102 | } |
103 | 103 | ||
104 | static int ip22_be_handler(struct pt_regs *regs, int is_fixup) | 104 | static int ip22_be_handler(struct pt_regs *regs, int is_fixup) |
diff --git a/arch/mips/sgi-ip22/ip28-berr.c b/arch/mips/sgi-ip22/ip28-berr.c index 082541d33161..c0cf7baee36d 100644 --- a/arch/mips/sgi-ip22/ip28-berr.c +++ b/arch/mips/sgi-ip22/ip28-berr.c | |||
@@ -462,7 +462,7 @@ void ip22_be_interrupt(int irq) | |||
462 | if (ip28_be_interrupt(regs) != MIPS_BE_DISCARD) { | 462 | if (ip28_be_interrupt(regs) != MIPS_BE_DISCARD) { |
463 | /* Assume it would be too dangerous to continue ... */ | 463 | /* Assume it would be too dangerous to continue ... */ |
464 | die_if_kernel("Oops", regs); | 464 | die_if_kernel("Oops", regs); |
465 | force_sig(SIGBUS, current); | 465 | force_sig(SIGBUS); |
466 | } else if (debug_be_interrupt) | 466 | } else if (debug_be_interrupt) |
467 | show_regs(regs); | 467 | show_regs(regs); |
468 | } | 468 | } |
diff --git a/arch/mips/sgi-ip27/ip27-berr.c b/arch/mips/sgi-ip27/ip27-berr.c index 83efe03d5c60..73ad29b180fb 100644 --- a/arch/mips/sgi-ip27/ip27-berr.c +++ b/arch/mips/sgi-ip27/ip27-berr.c | |||
@@ -74,7 +74,7 @@ int ip27_be_handler(struct pt_regs *regs, int is_fixup) | |||
74 | show_regs(regs); | 74 | show_regs(regs); |
75 | dump_tlb_all(); | 75 | dump_tlb_all(); |
76 | while(1); | 76 | while(1); |
77 | force_sig(SIGBUS, current); | 77 | force_sig(SIGBUS); |
78 | } | 78 | } |
79 | 79 | ||
80 | void __init ip27_be_init(void) | 80 | void __init ip27_be_init(void) |
diff --git a/arch/mips/sgi-ip32/ip32-berr.c b/arch/mips/sgi-ip32/ip32-berr.c index c1f12a9cf305..c860f95ab7ed 100644 --- a/arch/mips/sgi-ip32/ip32-berr.c +++ b/arch/mips/sgi-ip32/ip32-berr.c | |||
@@ -29,7 +29,7 @@ static int ip32_be_handler(struct pt_regs *regs, int is_fixup) | |||
29 | show_regs(regs); | 29 | show_regs(regs); |
30 | dump_tlb_all(); | 30 | dump_tlb_all(); |
31 | while(1); | 31 | while(1); |
32 | force_sig(SIGBUS, current); | 32 | force_sig(SIGBUS); |
33 | } | 33 | } |
34 | 34 | ||
35 | void __init ip32_be_init(void) | 35 | void __init ip32_be_init(void) |
diff --git a/arch/nds32/kernel/signal.c b/arch/nds32/kernel/signal.c index 5f7660aa2d68..fe61513982b4 100644 --- a/arch/nds32/kernel/signal.c +++ b/arch/nds32/kernel/signal.c | |||
@@ -163,7 +163,7 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs) | |||
163 | return regs->uregs[0]; | 163 | return regs->uregs[0]; |
164 | 164 | ||
165 | badframe: | 165 | badframe: |
166 | force_sig(SIGSEGV, current); | 166 | force_sig(SIGSEGV); |
167 | return 0; | 167 | return 0; |
168 | } | 168 | } |
169 | 169 | ||
diff --git a/arch/nds32/kernel/traps.c b/arch/nds32/kernel/traps.c index 5aa7c17da27a..8d84b8b30eb6 100644 --- a/arch/nds32/kernel/traps.c +++ b/arch/nds32/kernel/traps.c | |||
@@ -288,7 +288,7 @@ void unhandled_interruption(struct pt_regs *regs) | |||
288 | show_regs(regs); | 288 | show_regs(regs); |
289 | if (!user_mode(regs)) | 289 | if (!user_mode(regs)) |
290 | do_exit(SIGKILL); | 290 | do_exit(SIGKILL); |
291 | force_sig(SIGKILL, current); | 291 | force_sig(SIGKILL); |
292 | } | 292 | } |
293 | 293 | ||
294 | void unhandled_exceptions(unsigned long entry, unsigned long addr, | 294 | void unhandled_exceptions(unsigned long entry, unsigned long addr, |
@@ -299,7 +299,7 @@ void unhandled_exceptions(unsigned long entry, unsigned long addr, | |||
299 | show_regs(regs); | 299 | show_regs(regs); |
300 | if (!user_mode(regs)) | 300 | if (!user_mode(regs)) |
301 | do_exit(SIGKILL); | 301 | do_exit(SIGKILL); |
302 | force_sig(SIGKILL, current); | 302 | force_sig(SIGKILL); |
303 | } | 303 | } |
304 | 304 | ||
305 | extern int do_page_fault(unsigned long entry, unsigned long addr, | 305 | extern int do_page_fault(unsigned long entry, unsigned long addr, |
@@ -326,7 +326,7 @@ void do_revinsn(struct pt_regs *regs) | |||
326 | show_regs(regs); | 326 | show_regs(regs); |
327 | if (!user_mode(regs)) | 327 | if (!user_mode(regs)) |
328 | do_exit(SIGILL); | 328 | do_exit(SIGILL); |
329 | force_sig(SIGILL, current); | 329 | force_sig(SIGILL); |
330 | } | 330 | } |
331 | 331 | ||
332 | #ifdef CONFIG_ALIGNMENT_TRAP | 332 | #ifdef CONFIG_ALIGNMENT_TRAP |
diff --git a/arch/nios2/kernel/signal.c b/arch/nios2/kernel/signal.c index 9bf38531b189..a42dd09c6578 100644 --- a/arch/nios2/kernel/signal.c +++ b/arch/nios2/kernel/signal.c | |||
@@ -120,7 +120,7 @@ asmlinkage int do_rt_sigreturn(struct switch_stack *sw) | |||
120 | return rval; | 120 | return rval; |
121 | 121 | ||
122 | badframe: | 122 | badframe: |
123 | force_sig(SIGSEGV, current); | 123 | force_sig(SIGSEGV); |
124 | return 0; | 124 | return 0; |
125 | } | 125 | } |
126 | 126 | ||
diff --git a/arch/openrisc/kernel/signal.c b/arch/openrisc/kernel/signal.c index 5ac9d3b1d615..0337d1e1d2d5 100644 --- a/arch/openrisc/kernel/signal.c +++ b/arch/openrisc/kernel/signal.c | |||
@@ -99,7 +99,7 @@ asmlinkage long _sys_rt_sigreturn(struct pt_regs *regs) | |||
99 | return regs->gpr[11]; | 99 | return regs->gpr[11]; |
100 | 100 | ||
101 | badframe: | 101 | badframe: |
102 | force_sig(SIGSEGV, current); | 102 | force_sig(SIGSEGV); |
103 | return 0; | 103 | return 0; |
104 | } | 104 | } |
105 | 105 | ||
diff --git a/arch/openrisc/kernel/traps.c b/arch/openrisc/kernel/traps.c index 6ed7293ef007..0fad2e46ff43 100644 --- a/arch/openrisc/kernel/traps.c +++ b/arch/openrisc/kernel/traps.c | |||
@@ -376,7 +376,7 @@ static inline void simulate_lwa(struct pt_regs *regs, unsigned long address, | |||
376 | 376 | ||
377 | if (get_user(value, lwa_addr)) { | 377 | if (get_user(value, lwa_addr)) { |
378 | if (user_mode(regs)) { | 378 | if (user_mode(regs)) { |
379 | force_sig(SIGSEGV, current); | 379 | force_sig(SIGSEGV); |
380 | return; | 380 | return; |
381 | } | 381 | } |
382 | 382 | ||
@@ -423,7 +423,7 @@ static inline void simulate_swa(struct pt_regs *regs, unsigned long address, | |||
423 | 423 | ||
424 | if (put_user(regs->gpr[rb], vaddr)) { | 424 | if (put_user(regs->gpr[rb], vaddr)) { |
425 | if (user_mode(regs)) { | 425 | if (user_mode(regs)) { |
426 | force_sig(SIGSEGV, current); | 426 | force_sig(SIGSEGV); |
427 | return; | 427 | return; |
428 | } | 428 | } |
429 | 429 | ||
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c index 848c1934680b..02895a8f2c55 100644 --- a/arch/parisc/kernel/signal.c +++ b/arch/parisc/kernel/signal.c | |||
@@ -164,7 +164,7 @@ sys_rt_sigreturn(struct pt_regs *regs, int in_syscall) | |||
164 | 164 | ||
165 | give_sigsegv: | 165 | give_sigsegv: |
166 | DBG(1,"sys_rt_sigreturn: Sending SIGSEGV\n"); | 166 | DBG(1,"sys_rt_sigreturn: Sending SIGSEGV\n"); |
167 | force_sig(SIGSEGV, current); | 167 | force_sig(SIGSEGV); |
168 | return; | 168 | return; |
169 | } | 169 | } |
170 | 170 | ||
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index ede4f04281ae..fd48cdc0a4ff 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
@@ -1249,7 +1249,7 @@ SYSCALL_DEFINE0(rt_sigreturn) | |||
1249 | current->comm, current->pid, | 1249 | current->comm, current->pid, |
1250 | rt_sf, regs->nip, regs->link); | 1250 | rt_sf, regs->nip, regs->link); |
1251 | 1251 | ||
1252 | force_sig(SIGSEGV, current); | 1252 | force_sig(SIGSEGV); |
1253 | return 0; | 1253 | return 0; |
1254 | } | 1254 | } |
1255 | 1255 | ||
@@ -1338,7 +1338,7 @@ SYSCALL_DEFINE3(debug_setcontext, struct ucontext __user *, ctx, | |||
1338 | current->comm, current->pid, | 1338 | current->comm, current->pid, |
1339 | ctx, regs->nip, regs->link); | 1339 | ctx, regs->nip, regs->link); |
1340 | 1340 | ||
1341 | force_sig(SIGSEGV, current); | 1341 | force_sig(SIGSEGV); |
1342 | goto out; | 1342 | goto out; |
1343 | } | 1343 | } |
1344 | 1344 | ||
@@ -1516,6 +1516,6 @@ badframe: | |||
1516 | current->comm, current->pid, | 1516 | current->comm, current->pid, |
1517 | addr, regs->nip, regs->link); | 1517 | addr, regs->nip, regs->link); |
1518 | 1518 | ||
1519 | force_sig(SIGSEGV, current); | 1519 | force_sig(SIGSEGV); |
1520 | return 0; | 1520 | return 0; |
1521 | } | 1521 | } |
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c index 06c299ef6132..ea08d848f558 100644 --- a/arch/powerpc/kernel/signal_64.c +++ b/arch/powerpc/kernel/signal_64.c | |||
@@ -812,7 +812,7 @@ badframe: | |||
812 | current->comm, current->pid, "rt_sigreturn", | 812 | current->comm, current->pid, "rt_sigreturn", |
813 | (long)uc, regs->nip, regs->link); | 813 | (long)uc, regs->nip, regs->link); |
814 | 814 | ||
815 | force_sig(SIGSEGV, current); | 815 | force_sig(SIGSEGV); |
816 | return 0; | 816 | return 0; |
817 | } | 817 | } |
818 | 818 | ||
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c index 07f82d7395ff..3f2380f40f99 100644 --- a/arch/powerpc/platforms/cell/spufs/run.c +++ b/arch/powerpc/platforms/cell/spufs/run.c | |||
@@ -443,7 +443,7 @@ long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *event) | |||
443 | 443 | ||
444 | else if (unlikely((status & SPU_STATUS_STOPPED_BY_STOP) | 444 | else if (unlikely((status & SPU_STATUS_STOPPED_BY_STOP) |
445 | && (status >> SPU_STOP_STATUS_SHIFT) == 0x3fff)) { | 445 | && (status >> SPU_STOP_STATUS_SHIFT) == 0x3fff)) { |
446 | force_sig(SIGTRAP, current); | 446 | force_sig(SIGTRAP); |
447 | ret = -ERESTARTSYS; | 447 | ret = -ERESTARTSYS; |
448 | } | 448 | } |
449 | 449 | ||
diff --git a/arch/riscv/kernel/signal.c b/arch/riscv/kernel/signal.c index 804d6ee4f3c5..50c0e64372b0 100644 --- a/arch/riscv/kernel/signal.c +++ b/arch/riscv/kernel/signal.c | |||
@@ -139,7 +139,7 @@ badframe: | |||
139 | task->comm, task_pid_nr(task), __func__, | 139 | task->comm, task_pid_nr(task), __func__, |
140 | frame, (void *)regs->sepc, (void *)regs->sp); | 140 | frame, (void *)regs->sepc, (void *)regs->sp); |
141 | } | 141 | } |
142 | force_sig(SIGSEGV, task); | 142 | force_sig(SIGSEGV); |
143 | return 0; | 143 | return 0; |
144 | } | 144 | } |
145 | 145 | ||
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c index 6f2a193ccccc..38d4bdbc34b9 100644 --- a/arch/s390/kernel/compat_signal.c +++ b/arch/s390/kernel/compat_signal.c | |||
@@ -194,7 +194,7 @@ COMPAT_SYSCALL_DEFINE0(sigreturn) | |||
194 | load_sigregs(); | 194 | load_sigregs(); |
195 | return regs->gprs[2]; | 195 | return regs->gprs[2]; |
196 | badframe: | 196 | badframe: |
197 | force_sig(SIGSEGV, current); | 197 | force_sig(SIGSEGV); |
198 | return 0; | 198 | return 0; |
199 | } | 199 | } |
200 | 200 | ||
@@ -217,7 +217,7 @@ COMPAT_SYSCALL_DEFINE0(rt_sigreturn) | |||
217 | load_sigregs(); | 217 | load_sigregs(); |
218 | return regs->gprs[2]; | 218 | return regs->gprs[2]; |
219 | badframe: | 219 | badframe: |
220 | force_sig(SIGSEGV, current); | 220 | force_sig(SIGSEGV); |
221 | return 0; | 221 | return 0; |
222 | } | 222 | } |
223 | 223 | ||
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c index 22f08245aa5d..e6fca5498e1f 100644 --- a/arch/s390/kernel/signal.c +++ b/arch/s390/kernel/signal.c | |||
@@ -232,7 +232,7 @@ SYSCALL_DEFINE0(sigreturn) | |||
232 | load_sigregs(); | 232 | load_sigregs(); |
233 | return regs->gprs[2]; | 233 | return regs->gprs[2]; |
234 | badframe: | 234 | badframe: |
235 | force_sig(SIGSEGV, current); | 235 | force_sig(SIGSEGV); |
236 | return 0; | 236 | return 0; |
237 | } | 237 | } |
238 | 238 | ||
@@ -256,7 +256,7 @@ SYSCALL_DEFINE0(rt_sigreturn) | |||
256 | load_sigregs(); | 256 | load_sigregs(); |
257 | return regs->gprs[2]; | 257 | return regs->gprs[2]; |
258 | badframe: | 258 | badframe: |
259 | force_sig(SIGSEGV, current); | 259 | force_sig(SIGSEGV); |
260 | return 0; | 260 | return 0; |
261 | } | 261 | } |
262 | 262 | ||
diff --git a/arch/sh/kernel/cpu/sh2a/fpu.c b/arch/sh/kernel/cpu/sh2a/fpu.c index 74b48db86dd7..0bcff11a4843 100644 --- a/arch/sh/kernel/cpu/sh2a/fpu.c +++ b/arch/sh/kernel/cpu/sh2a/fpu.c | |||
@@ -568,5 +568,5 @@ BUILD_TRAP_HANDLER(fpu_error) | |||
568 | return; | 568 | return; |
569 | } | 569 | } |
570 | 570 | ||
571 | force_sig(SIGFPE, tsk); | 571 | force_sig(SIGFPE); |
572 | } | 572 | } |
diff --git a/arch/sh/kernel/cpu/sh4/fpu.c b/arch/sh/kernel/cpu/sh4/fpu.c index 1ff56e5ba990..03ffd8cdf542 100644 --- a/arch/sh/kernel/cpu/sh4/fpu.c +++ b/arch/sh/kernel/cpu/sh4/fpu.c | |||
@@ -421,5 +421,5 @@ BUILD_TRAP_HANDLER(fpu_error) | |||
421 | } | 421 | } |
422 | } | 422 | } |
423 | 423 | ||
424 | force_sig(SIGFPE, tsk); | 424 | force_sig(SIGFPE); |
425 | } | 425 | } |
diff --git a/arch/sh/kernel/cpu/sh5/fpu.c b/arch/sh/kernel/cpu/sh5/fpu.c index 9218d9ed787e..3966b5ee8e93 100644 --- a/arch/sh/kernel/cpu/sh5/fpu.c +++ b/arch/sh/kernel/cpu/sh5/fpu.c | |||
@@ -100,9 +100,7 @@ void restore_fpu(struct task_struct *tsk) | |||
100 | 100 | ||
101 | asmlinkage void do_fpu_error(unsigned long ex, struct pt_regs *regs) | 101 | asmlinkage void do_fpu_error(unsigned long ex, struct pt_regs *regs) |
102 | { | 102 | { |
103 | struct task_struct *tsk = current; | ||
104 | |||
105 | regs->pc += 4; | 103 | regs->pc += 4; |
106 | 104 | ||
107 | force_sig(SIGFPE, tsk); | 105 | force_sig(SIGFPE); |
108 | } | 106 | } |
diff --git a/arch/sh/kernel/ptrace_64.c b/arch/sh/kernel/ptrace_64.c index 3390349ff976..11085e48eaa6 100644 --- a/arch/sh/kernel/ptrace_64.c +++ b/arch/sh/kernel/ptrace_64.c | |||
@@ -550,7 +550,7 @@ asmlinkage void do_single_step(unsigned long long vec, struct pt_regs *regs) | |||
550 | continually stepping. */ | 550 | continually stepping. */ |
551 | local_irq_enable(); | 551 | local_irq_enable(); |
552 | regs->sr &= ~SR_SSTEP; | 552 | regs->sr &= ~SR_SSTEP; |
553 | force_sig(SIGTRAP, current); | 553 | force_sig(SIGTRAP); |
554 | } | 554 | } |
555 | 555 | ||
556 | /* Called with interrupts disabled */ | 556 | /* Called with interrupts disabled */ |
@@ -561,7 +561,7 @@ BUILD_TRAP_HANDLER(breakpoint) | |||
561 | /* We need to forward step the PC, to counteract the backstep done | 561 | /* We need to forward step the PC, to counteract the backstep done |
562 | in signal.c. */ | 562 | in signal.c. */ |
563 | local_irq_enable(); | 563 | local_irq_enable(); |
564 | force_sig(SIGTRAP, current); | 564 | force_sig(SIGTRAP); |
565 | regs->pc += 4; | 565 | regs->pc += 4; |
566 | } | 566 | } |
567 | 567 | ||
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index 2a2121ba8ebe..24473fa6c3b6 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c | |||
@@ -176,7 +176,7 @@ asmlinkage int sys_sigreturn(void) | |||
176 | return r0; | 176 | return r0; |
177 | 177 | ||
178 | badframe: | 178 | badframe: |
179 | force_sig(SIGSEGV, current); | 179 | force_sig(SIGSEGV); |
180 | return 0; | 180 | return 0; |
181 | } | 181 | } |
182 | 182 | ||
@@ -207,7 +207,7 @@ asmlinkage int sys_rt_sigreturn(void) | |||
207 | return r0; | 207 | return r0; |
208 | 208 | ||
209 | badframe: | 209 | badframe: |
210 | force_sig(SIGSEGV, current); | 210 | force_sig(SIGSEGV); |
211 | return 0; | 211 | return 0; |
212 | } | 212 | } |
213 | 213 | ||
diff --git a/arch/sh/kernel/signal_64.c b/arch/sh/kernel/signal_64.c index f1f1598879c2..b9aaa9266b34 100644 --- a/arch/sh/kernel/signal_64.c +++ b/arch/sh/kernel/signal_64.c | |||
@@ -277,7 +277,7 @@ asmlinkage int sys_sigreturn(unsigned long r2, unsigned long r3, | |||
277 | return (int) ret; | 277 | return (int) ret; |
278 | 278 | ||
279 | badframe: | 279 | badframe: |
280 | force_sig(SIGSEGV, current); | 280 | force_sig(SIGSEGV); |
281 | return 0; | 281 | return 0; |
282 | } | 282 | } |
283 | 283 | ||
@@ -311,7 +311,7 @@ asmlinkage int sys_rt_sigreturn(unsigned long r2, unsigned long r3, | |||
311 | return (int) ret; | 311 | return (int) ret; |
312 | 312 | ||
313 | badframe: | 313 | badframe: |
314 | force_sig(SIGSEGV, current); | 314 | force_sig(SIGSEGV); |
315 | return 0; | 315 | return 0; |
316 | } | 316 | } |
317 | 317 | ||
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c index 8b49cced663d..63cf17bc760d 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c | |||
@@ -141,7 +141,7 @@ BUILD_TRAP_HANDLER(debug) | |||
141 | SIGTRAP) == NOTIFY_STOP) | 141 | SIGTRAP) == NOTIFY_STOP) |
142 | return; | 142 | return; |
143 | 143 | ||
144 | force_sig(SIGTRAP, current); | 144 | force_sig(SIGTRAP); |
145 | } | 145 | } |
146 | 146 | ||
147 | /* | 147 | /* |
@@ -167,7 +167,7 @@ BUILD_TRAP_HANDLER(bug) | |||
167 | } | 167 | } |
168 | #endif | 168 | #endif |
169 | 169 | ||
170 | force_sig(SIGTRAP, current); | 170 | force_sig(SIGTRAP); |
171 | } | 171 | } |
172 | 172 | ||
173 | BUILD_TRAP_HANDLER(nmi) | 173 | BUILD_TRAP_HANDLER(nmi) |
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index f2a18b5fafd8..bd5568c8e7f0 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c | |||
@@ -611,7 +611,6 @@ asmlinkage void do_reserved_inst(void) | |||
611 | { | 611 | { |
612 | struct pt_regs *regs = current_pt_regs(); | 612 | struct pt_regs *regs = current_pt_regs(); |
613 | unsigned long error_code; | 613 | unsigned long error_code; |
614 | struct task_struct *tsk = current; | ||
615 | 614 | ||
616 | #ifdef CONFIG_SH_FPU_EMU | 615 | #ifdef CONFIG_SH_FPU_EMU |
617 | unsigned short inst = 0; | 616 | unsigned short inst = 0; |
@@ -633,7 +632,7 @@ asmlinkage void do_reserved_inst(void) | |||
633 | /* Enable DSP mode, and restart instruction. */ | 632 | /* Enable DSP mode, and restart instruction. */ |
634 | regs->sr |= SR_DSP; | 633 | regs->sr |= SR_DSP; |
635 | /* Save DSP mode */ | 634 | /* Save DSP mode */ |
636 | tsk->thread.dsp_status.status |= SR_DSP; | 635 | current->thread.dsp_status.status |= SR_DSP; |
637 | return; | 636 | return; |
638 | } | 637 | } |
639 | #endif | 638 | #endif |
@@ -641,7 +640,7 @@ asmlinkage void do_reserved_inst(void) | |||
641 | error_code = lookup_exception_vector(); | 640 | error_code = lookup_exception_vector(); |
642 | 641 | ||
643 | local_irq_enable(); | 642 | local_irq_enable(); |
644 | force_sig(SIGILL, tsk); | 643 | force_sig(SIGILL); |
645 | die_if_no_fixup("reserved instruction", regs, error_code); | 644 | die_if_no_fixup("reserved instruction", regs, error_code); |
646 | } | 645 | } |
647 | 646 | ||
@@ -697,7 +696,6 @@ asmlinkage void do_illegal_slot_inst(void) | |||
697 | { | 696 | { |
698 | struct pt_regs *regs = current_pt_regs(); | 697 | struct pt_regs *regs = current_pt_regs(); |
699 | unsigned long inst; | 698 | unsigned long inst; |
700 | struct task_struct *tsk = current; | ||
701 | 699 | ||
702 | if (kprobe_handle_illslot(regs->pc) == 0) | 700 | if (kprobe_handle_illslot(regs->pc) == 0) |
703 | return; | 701 | return; |
@@ -716,7 +714,7 @@ asmlinkage void do_illegal_slot_inst(void) | |||
716 | inst = lookup_exception_vector(); | 714 | inst = lookup_exception_vector(); |
717 | 715 | ||
718 | local_irq_enable(); | 716 | local_irq_enable(); |
719 | force_sig(SIGILL, tsk); | 717 | force_sig(SIGILL); |
720 | die_if_no_fixup("illegal slot instruction", regs, inst); | 718 | die_if_no_fixup("illegal slot instruction", regs, inst); |
721 | } | 719 | } |
722 | 720 | ||
diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c index 8ce90a7da67d..37046f3a26d3 100644 --- a/arch/sh/kernel/traps_64.c +++ b/arch/sh/kernel/traps_64.c | |||
@@ -599,7 +599,7 @@ static void do_unhandled_exception(int signr, char *str, unsigned long error, | |||
599 | struct pt_regs *regs) | 599 | struct pt_regs *regs) |
600 | { | 600 | { |
601 | if (user_mode(regs)) | 601 | if (user_mode(regs)) |
602 | force_sig(signr, current); | 602 | force_sig(signr); |
603 | 603 | ||
604 | die_if_no_fixup(str, regs, error); | 604 | die_if_no_fixup(str, regs, error); |
605 | } | 605 | } |
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index 59eaf6227af1..c4bccd97f3cf 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c | |||
@@ -570,7 +570,7 @@ void fault_in_user_windows(struct pt_regs *regs) | |||
570 | 570 | ||
571 | barf: | 571 | barf: |
572 | set_thread_wsaved(window + 1); | 572 | set_thread_wsaved(window + 1); |
573 | force_sig(SIGSEGV, current); | 573 | force_sig(SIGSEGV); |
574 | } | 574 | } |
575 | 575 | ||
576 | asmlinkage long sparc_do_fork(unsigned long clone_flags, | 576 | asmlinkage long sparc_do_fork(unsigned long clone_flags, |
diff --git a/arch/sparc/kernel/signal32.c b/arch/sparc/kernel/signal32.c index fb431d47a532..a237810aa9f4 100644 --- a/arch/sparc/kernel/signal32.c +++ b/arch/sparc/kernel/signal32.c | |||
@@ -170,7 +170,7 @@ void do_sigreturn32(struct pt_regs *regs) | |||
170 | return; | 170 | return; |
171 | 171 | ||
172 | segv: | 172 | segv: |
173 | force_sig(SIGSEGV, current); | 173 | force_sig(SIGSEGV); |
174 | } | 174 | } |
175 | 175 | ||
176 | asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) | 176 | asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) |
@@ -256,7 +256,7 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) | |||
256 | set_current_blocked(&set); | 256 | set_current_blocked(&set); |
257 | return; | 257 | return; |
258 | segv: | 258 | segv: |
259 | force_sig(SIGSEGV, current); | 259 | force_sig(SIGSEGV); |
260 | } | 260 | } |
261 | 261 | ||
262 | static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize) | 262 | static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize) |
diff --git a/arch/sparc/kernel/signal_32.c b/arch/sparc/kernel/signal_32.c index 83953780ca01..42c3de313fd6 100644 --- a/arch/sparc/kernel/signal_32.c +++ b/arch/sparc/kernel/signal_32.c | |||
@@ -137,7 +137,7 @@ asmlinkage void do_sigreturn(struct pt_regs *regs) | |||
137 | return; | 137 | return; |
138 | 138 | ||
139 | segv_and_exit: | 139 | segv_and_exit: |
140 | force_sig(SIGSEGV, current); | 140 | force_sig(SIGSEGV); |
141 | } | 141 | } |
142 | 142 | ||
143 | asmlinkage void do_rt_sigreturn(struct pt_regs *regs) | 143 | asmlinkage void do_rt_sigreturn(struct pt_regs *regs) |
@@ -196,7 +196,7 @@ asmlinkage void do_rt_sigreturn(struct pt_regs *regs) | |||
196 | set_current_blocked(&set); | 196 | set_current_blocked(&set); |
197 | return; | 197 | return; |
198 | segv: | 198 | segv: |
199 | force_sig(SIGSEGV, current); | 199 | force_sig(SIGSEGV); |
200 | } | 200 | } |
201 | 201 | ||
202 | static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize) | 202 | static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize) |
diff --git a/arch/sparc/kernel/signal_64.c b/arch/sparc/kernel/signal_64.c index 9d50190cf312..69ae814b7e90 100644 --- a/arch/sparc/kernel/signal_64.c +++ b/arch/sparc/kernel/signal_64.c | |||
@@ -134,7 +134,7 @@ out: | |||
134 | exception_exit(prev_state); | 134 | exception_exit(prev_state); |
135 | return; | 135 | return; |
136 | do_sigsegv: | 136 | do_sigsegv: |
137 | force_sig(SIGSEGV, current); | 137 | force_sig(SIGSEGV); |
138 | goto out; | 138 | goto out; |
139 | } | 139 | } |
140 | 140 | ||
@@ -228,7 +228,7 @@ out: | |||
228 | exception_exit(prev_state); | 228 | exception_exit(prev_state); |
229 | return; | 229 | return; |
230 | do_sigsegv: | 230 | do_sigsegv: |
231 | force_sig(SIGSEGV, current); | 231 | force_sig(SIGSEGV); |
232 | goto out; | 232 | goto out; |
233 | } | 233 | } |
234 | 234 | ||
@@ -320,7 +320,7 @@ void do_rt_sigreturn(struct pt_regs *regs) | |||
320 | set_current_blocked(&set); | 320 | set_current_blocked(&set); |
321 | return; | 321 | return; |
322 | segv: | 322 | segv: |
323 | force_sig(SIGSEGV, current); | 323 | force_sig(SIGSEGV); |
324 | } | 324 | } |
325 | 325 | ||
326 | static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize) | 326 | static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesize) |
diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c index 0cd02a64a451..12bfc7e215ca 100644 --- a/arch/sparc/kernel/traps_64.c +++ b/arch/sparc/kernel/traps_64.c | |||
@@ -2181,7 +2181,7 @@ bool sun4v_nonresum_error_user_handled(struct pt_regs *regs, | |||
2181 | addr += PAGE_SIZE; | 2181 | addr += PAGE_SIZE; |
2182 | } | 2182 | } |
2183 | } | 2183 | } |
2184 | force_sig(SIGKILL, current); | 2184 | force_sig(SIGKILL); |
2185 | 2185 | ||
2186 | return true; | 2186 | return true; |
2187 | } | 2187 | } |
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c index b0440b0edd97..2731faf415ba 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c | |||
@@ -425,7 +425,7 @@ do_sigbus: | |||
425 | static void check_stack_aligned(unsigned long sp) | 425 | static void check_stack_aligned(unsigned long sp) |
426 | { | 426 | { |
427 | if (sp & 0x7UL) | 427 | if (sp & 0x7UL) |
428 | force_sig(SIGILL, current); | 428 | force_sig(SIGILL); |
429 | } | 429 | } |
430 | 430 | ||
431 | void window_overflow_fault(void) | 431 | void window_overflow_fault(void) |
diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c index a43d42bf0a86..783b9247161f 100644 --- a/arch/um/kernel/exec.c +++ b/arch/um/kernel/exec.c | |||
@@ -32,7 +32,7 @@ void flush_thread(void) | |||
32 | if (ret) { | 32 | if (ret) { |
33 | printk(KERN_ERR "flush_thread - clearing address space failed, " | 33 | printk(KERN_ERR "flush_thread - clearing address space failed, " |
34 | "err = %d\n", ret); | 34 | "err = %d\n", ret); |
35 | force_sig(SIGKILL, current); | 35 | force_sig(SIGKILL); |
36 | } | 36 | } |
37 | get_safe_registers(current_pt_regs()->regs.gp, | 37 | get_safe_registers(current_pt_regs()->regs.gp, |
38 | current_pt_regs()->regs.fp); | 38 | current_pt_regs()->regs.fp); |
diff --git a/arch/um/kernel/tlb.c b/arch/um/kernel/tlb.c index 8347161c2ae0..45f739bf302f 100644 --- a/arch/um/kernel/tlb.c +++ b/arch/um/kernel/tlb.c | |||
@@ -329,7 +329,7 @@ void fix_range_common(struct mm_struct *mm, unsigned long start_addr, | |||
329 | "process: %d\n", task_tgid_vnr(current)); | 329 | "process: %d\n", task_tgid_vnr(current)); |
330 | /* We are under mmap_sem, release it such that current can terminate */ | 330 | /* We are under mmap_sem, release it such that current can terminate */ |
331 | up_write(¤t->mm->mmap_sem); | 331 | up_write(¤t->mm->mmap_sem); |
332 | force_sig(SIGKILL, current); | 332 | force_sig(SIGKILL); |
333 | do_signal(¤t->thread.regs); | 333 | do_signal(¤t->thread.regs); |
334 | } | 334 | } |
335 | } | 335 | } |
@@ -487,7 +487,7 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long address) | |||
487 | 487 | ||
488 | kill: | 488 | kill: |
489 | printk(KERN_ERR "Failed to flush page for address 0x%lx\n", address); | 489 | printk(KERN_ERR "Failed to flush page for address 0x%lx\n", address); |
490 | force_sig(SIGKILL, current); | 490 | force_sig(SIGKILL); |
491 | } | 491 | } |
492 | 492 | ||
493 | pgd_t *pgd_offset_proc(struct mm_struct *mm, unsigned long address) | 493 | pgd_t *pgd_offset_proc(struct mm_struct *mm, unsigned long address) |
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c index 646059402ab3..1c943c66063f 100644 --- a/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c | |||
@@ -309,7 +309,7 @@ void relay_signal(int sig, struct siginfo *si, struct uml_pt_regs *regs) | |||
309 | } else { | 309 | } else { |
310 | printk(KERN_ERR "Attempted to relay unknown signal %d (si_code = %d) with errno %d\n", | 310 | printk(KERN_ERR "Attempted to relay unknown signal %d (si_code = %d) with errno %d\n", |
311 | sig, code, err); | 311 | sig, code, err); |
312 | force_sig(sig, current); | 312 | force_sig(sig); |
313 | } | 313 | } |
314 | } | 314 | } |
315 | 315 | ||
diff --git a/arch/unicore32/kernel/signal.c b/arch/unicore32/kernel/signal.c index 75f27dc68bd0..070fa58d23a9 100644 --- a/arch/unicore32/kernel/signal.c +++ b/arch/unicore32/kernel/signal.c | |||
@@ -129,7 +129,7 @@ asmlinkage int __sys_rt_sigreturn(struct pt_regs *regs) | |||
129 | return regs->UCreg_00; | 129 | return regs->UCreg_00; |
130 | 130 | ||
131 | badframe: | 131 | badframe: |
132 | force_sig(SIGSEGV, current); | 132 | force_sig(SIGSEGV); |
133 | return 0; | 133 | return 0; |
134 | } | 134 | } |
135 | 135 | ||
diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c index d9d81ad7a400..7ea87f4ad0b7 100644 --- a/arch/x86/entry/vsyscall/vsyscall_64.c +++ b/arch/x86/entry/vsyscall/vsyscall_64.c | |||
@@ -268,7 +268,7 @@ do_ret: | |||
268 | return true; | 268 | return true; |
269 | 269 | ||
270 | sigsegv: | 270 | sigsegv: |
271 | force_sig(SIGSEGV, current); | 271 | force_sig(SIGSEGV); |
272 | return true; | 272 | return true; |
273 | } | 273 | } |
274 | 274 | ||
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index 5112a50e6486..e11ac124dd37 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c | |||
@@ -1329,7 +1329,7 @@ void do_machine_check(struct pt_regs *regs, long error_code) | |||
1329 | local_irq_enable(); | 1329 | local_irq_enable(); |
1330 | 1330 | ||
1331 | if (kill_it || do_memory_failure(&m)) | 1331 | if (kill_it || do_memory_failure(&m)) |
1332 | force_sig(SIGBUS, current); | 1332 | force_sig(SIGBUS); |
1333 | local_irq_disable(); | 1333 | local_irq_disable(); |
1334 | ist_end_non_atomic(); | 1334 | ist_end_non_atomic(); |
1335 | } else { | 1335 | } else { |
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c index 364813cea647..7cf508f78c8c 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c | |||
@@ -857,7 +857,7 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where) | |||
857 | pr_cont("\n"); | 857 | pr_cont("\n"); |
858 | } | 858 | } |
859 | 859 | ||
860 | force_sig(SIGSEGV, me); | 860 | force_sig(SIGSEGV); |
861 | } | 861 | } |
862 | 862 | ||
863 | #ifdef CONFIG_X86_X32_ABI | 863 | #ifdef CONFIG_X86_X32_ABI |
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index 8b6d03e55d2f..e54f0cad4b2e 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c | |||
@@ -254,7 +254,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs, | |||
254 | show_signal(tsk, signr, "trap ", str, regs, error_code); | 254 | show_signal(tsk, signr, "trap ", str, regs, error_code); |
255 | 255 | ||
256 | if (!sicode) | 256 | if (!sicode) |
257 | force_sig(signr, tsk); | 257 | force_sig(signr); |
258 | else | 258 | else |
259 | force_sig_fault(signr, sicode, addr, tsk); | 259 | force_sig_fault(signr, sicode, addr, tsk); |
260 | } | 260 | } |
@@ -566,7 +566,7 @@ do_general_protection(struct pt_regs *regs, long error_code) | |||
566 | 566 | ||
567 | show_signal(tsk, SIGSEGV, "", desc, regs, error_code); | 567 | show_signal(tsk, SIGSEGV, "", desc, regs, error_code); |
568 | 568 | ||
569 | force_sig(SIGSEGV, tsk); | 569 | force_sig(SIGSEGV); |
570 | } | 570 | } |
571 | NOKPROBE_SYMBOL(do_general_protection); | 571 | NOKPROBE_SYMBOL(do_general_protection); |
572 | 572 | ||
diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c index ccf03416e434..18239d5a8b53 100644 --- a/arch/x86/kernel/uprobes.c +++ b/arch/x86/kernel/uprobes.c | |||
@@ -1087,7 +1087,7 @@ arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs | |||
1087 | pr_err("return address clobbered: pid=%d, %%sp=%#lx, %%ip=%#lx\n", | 1087 | pr_err("return address clobbered: pid=%d, %%sp=%#lx, %%ip=%#lx\n", |
1088 | current->pid, regs->sp, regs->ip); | 1088 | current->pid, regs->sp, regs->ip); |
1089 | 1089 | ||
1090 | force_sig(SIGSEGV, current); | 1090 | force_sig(SIGSEGV); |
1091 | } | 1091 | } |
1092 | 1092 | ||
1093 | return -1; | 1093 | return -1; |
diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c index 6a38717d179c..a76c12b38e92 100644 --- a/arch/x86/kernel/vm86_32.c +++ b/arch/x86/kernel/vm86_32.c | |||
@@ -583,7 +583,7 @@ int handle_vm86_trap(struct kernel_vm86_regs *regs, long error_code, int trapno) | |||
583 | return 1; /* we let this handle by the calling routine */ | 583 | return 1; /* we let this handle by the calling routine */ |
584 | current->thread.trap_nr = trapno; | 584 | current->thread.trap_nr = trapno; |
585 | current->thread.error_code = error_code; | 585 | current->thread.error_code = error_code; |
586 | force_sig(SIGTRAP, current); | 586 | force_sig(SIGTRAP); |
587 | return 0; | 587 | return 0; |
588 | } | 588 | } |
589 | 589 | ||
diff --git a/arch/x86/mm/mpx.c b/arch/x86/mm/mpx.c index 0d1c47cbbdd6..895fb7a9294d 100644 --- a/arch/x86/mm/mpx.c +++ b/arch/x86/mm/mpx.c | |||
@@ -912,7 +912,7 @@ void mpx_notify_unmap(struct mm_struct *mm, unsigned long start, | |||
912 | 912 | ||
913 | ret = mpx_unmap_tables(mm, start, end); | 913 | ret = mpx_unmap_tables(mm, start, end); |
914 | if (ret) | 914 | if (ret) |
915 | force_sig(SIGSEGV, current); | 915 | force_sig(SIGSEGV); |
916 | } | 916 | } |
917 | 917 | ||
918 | /* MPX cannot handle addresses above 47 bits yet. */ | 918 | /* MPX cannot handle addresses above 47 bits yet. */ |
diff --git a/arch/x86/um/signal.c b/arch/x86/um/signal.c index 8b4a71efe7ee..7c11c9e5d7ea 100644 --- a/arch/x86/um/signal.c +++ b/arch/x86/um/signal.c | |||
@@ -471,7 +471,7 @@ long sys_sigreturn(void) | |||
471 | return PT_REGS_SYSCALL_RET(¤t->thread.regs); | 471 | return PT_REGS_SYSCALL_RET(¤t->thread.regs); |
472 | 472 | ||
473 | segfault: | 473 | segfault: |
474 | force_sig(SIGSEGV, current); | 474 | force_sig(SIGSEGV); |
475 | return 0; | 475 | return 0; |
476 | } | 476 | } |
477 | 477 | ||
@@ -577,6 +577,6 @@ long sys_rt_sigreturn(void) | |||
577 | return PT_REGS_SYSCALL_RET(¤t->thread.regs); | 577 | return PT_REGS_SYSCALL_RET(¤t->thread.regs); |
578 | 578 | ||
579 | segfault: | 579 | segfault: |
580 | force_sig(SIGSEGV, current); | 580 | force_sig(SIGSEGV); |
581 | return 0; | 581 | return 0; |
582 | } | 582 | } |
diff --git a/arch/xtensa/kernel/signal.c b/arch/xtensa/kernel/signal.c index dc22a238ed9c..fbedf2aba09d 100644 --- a/arch/xtensa/kernel/signal.c +++ b/arch/xtensa/kernel/signal.c | |||
@@ -270,7 +270,7 @@ asmlinkage long xtensa_rt_sigreturn(long a0, long a1, long a2, long a3, | |||
270 | return ret; | 270 | return ret; |
271 | 271 | ||
272 | badframe: | 272 | badframe: |
273 | force_sig(SIGSEGV, current); | 273 | force_sig(SIGSEGV); |
274 | return 0; | 274 | return 0; |
275 | } | 275 | } |
276 | 276 | ||
diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c index 454d53096bc9..6f26b254091b 100644 --- a/arch/xtensa/kernel/traps.c +++ b/arch/xtensa/kernel/traps.c | |||
@@ -184,7 +184,7 @@ void do_unhandled(struct pt_regs *regs, unsigned long exccause) | |||
184 | "\tEXCCAUSE is %ld\n", | 184 | "\tEXCCAUSE is %ld\n", |
185 | current->comm, task_pid_nr(current), regs->pc, | 185 | current->comm, task_pid_nr(current), regs->pc, |
186 | exccause); | 186 | exccause); |
187 | force_sig(SIGILL, current); | 187 | force_sig(SIGILL); |
188 | } | 188 | } |
189 | 189 | ||
190 | /* | 190 | /* |
@@ -306,7 +306,7 @@ do_illegal_instruction(struct pt_regs *regs) | |||
306 | 306 | ||
307 | pr_info_ratelimited("Illegal Instruction in '%s' (pid = %d, pc = %#010lx)\n", | 307 | pr_info_ratelimited("Illegal Instruction in '%s' (pid = %d, pc = %#010lx)\n", |
308 | current->comm, task_pid_nr(current), regs->pc); | 308 | current->comm, task_pid_nr(current), regs->pc); |
309 | force_sig(SIGILL, current); | 309 | force_sig(SIGILL); |
310 | } | 310 | } |
311 | 311 | ||
312 | 312 | ||
@@ -354,7 +354,7 @@ do_debug(struct pt_regs *regs) | |||
354 | 354 | ||
355 | /* If in user mode, send SIGTRAP signal to current process */ | 355 | /* If in user mode, send SIGTRAP signal to current process */ |
356 | 356 | ||
357 | force_sig(SIGTRAP, current); | 357 | force_sig(SIGTRAP); |
358 | } | 358 | } |
359 | 359 | ||
360 | 360 | ||
diff --git a/drivers/misc/lkdtm/bugs.c b/drivers/misc/lkdtm/bugs.c index 7eebbdfbcacd..86556adb1482 100644 --- a/drivers/misc/lkdtm/bugs.c +++ b/drivers/misc/lkdtm/bugs.c | |||
@@ -225,7 +225,7 @@ void lkdtm_CORRUPT_USER_DS(void) | |||
225 | set_fs(KERNEL_DS); | 225 | set_fs(KERNEL_DS); |
226 | 226 | ||
227 | /* Make sure we do not keep running with a KERNEL_DS! */ | 227 | /* Make sure we do not keep running with a KERNEL_DS! */ |
228 | force_sig(SIGKILL, current); | 228 | force_sig(SIGKILL); |
229 | } | 229 | } |
230 | 230 | ||
231 | /* Test that VMAP_STACK is actually allocating with a leading guard page */ | 231 | /* Test that VMAP_STACK is actually allocating with a leading guard page */ |
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index 8af3101da782..e9df3f0cce48 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h | |||
@@ -335,7 +335,7 @@ extern int kill_pgrp(struct pid *pid, int sig, int priv); | |||
335 | extern int kill_pid(struct pid *pid, int sig, int priv); | 335 | extern int kill_pid(struct pid *pid, int sig, int priv); |
336 | extern __must_check bool do_notify_parent(struct task_struct *, int); | 336 | extern __must_check bool do_notify_parent(struct task_struct *, int); |
337 | extern void __wake_up_parent(struct task_struct *p, struct task_struct *parent); | 337 | extern void __wake_up_parent(struct task_struct *p, struct task_struct *parent); |
338 | extern void force_sig(int, struct task_struct *); | 338 | extern void force_sig(int); |
339 | extern int send_sig(int, struct task_struct *, int); | 339 | extern int send_sig(int, struct task_struct *, int); |
340 | extern int zap_other_threads(struct task_struct *p); | 340 | extern int zap_other_threads(struct task_struct *p); |
341 | extern struct sigqueue *sigqueue_alloc(void); | 341 | extern struct sigqueue *sigqueue_alloc(void); |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index e2870fe1be5b..fd6e0f5ebfdf 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -266,7 +266,7 @@ static inline void addr_limit_user_check(void) | |||
266 | 266 | ||
267 | if (CHECK_DATA_CORRUPTION(!segment_eq(get_fs(), USER_DS), | 267 | if (CHECK_DATA_CORRUPTION(!segment_eq(get_fs(), USER_DS), |
268 | "Invalid address limit on user-mode return")) | 268 | "Invalid address limit on user-mode return")) |
269 | force_sig(SIGKILL, current); | 269 | force_sig(SIGKILL); |
270 | 270 | ||
271 | #ifdef TIF_FSCHECK | 271 | #ifdef TIF_FSCHECK |
272 | clear_thread_flag(TIF_FSCHECK); | 272 | clear_thread_flag(TIF_FSCHECK); |
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index 78f61bfc6b79..359122185cfb 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c | |||
@@ -2112,7 +2112,7 @@ static void handle_trampoline(struct pt_regs *regs) | |||
2112 | 2112 | ||
2113 | sigill: | 2113 | sigill: |
2114 | uprobe_warn(current, "handle uretprobe, sending SIGILL."); | 2114 | uprobe_warn(current, "handle uretprobe, sending SIGILL."); |
2115 | force_sig(SIGILL, current); | 2115 | force_sig(SIGILL); |
2116 | 2116 | ||
2117 | } | 2117 | } |
2118 | 2118 | ||
@@ -2228,7 +2228,7 @@ static void handle_singlestep(struct uprobe_task *utask, struct pt_regs *regs) | |||
2228 | 2228 | ||
2229 | if (unlikely(err)) { | 2229 | if (unlikely(err)) { |
2230 | uprobe_warn(current, "execute the probed insn, sending SIGILL."); | 2230 | uprobe_warn(current, "execute the probed insn, sending SIGILL."); |
2231 | force_sig(SIGILL, current); | 2231 | force_sig(SIGILL); |
2232 | } | 2232 | } |
2233 | } | 2233 | } |
2234 | 2234 | ||
diff --git a/kernel/rseq.c b/kernel/rseq.c index e1aa3ebee291..27c48eb7de40 100644 --- a/kernel/rseq.c +++ b/kernel/rseq.c | |||
@@ -296,7 +296,7 @@ void rseq_syscall(struct pt_regs *regs) | |||
296 | return; | 296 | return; |
297 | if (!access_ok(t->rseq, sizeof(*t->rseq)) || | 297 | if (!access_ok(t->rseq, sizeof(*t->rseq)) || |
298 | rseq_get_rseq_cs(t, &rseq_cs) || in_rseq_cs(ip, &rseq_cs)) | 298 | rseq_get_rseq_cs(t, &rseq_cs) || in_rseq_cs(ip, &rseq_cs)) |
299 | force_sig(SIGSEGV, t); | 299 | force_sig(SIGSEGV); |
300 | } | 300 | } |
301 | 301 | ||
302 | #endif | 302 | #endif |
diff --git a/kernel/signal.c b/kernel/signal.c index f7669d240ce4..20878c4c28c2 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -1595,9 +1595,9 @@ send_sig(int sig, struct task_struct *p, int priv) | |||
1595 | } | 1595 | } |
1596 | EXPORT_SYMBOL(send_sig); | 1596 | EXPORT_SYMBOL(send_sig); |
1597 | 1597 | ||
1598 | void force_sig(int sig, struct task_struct *p) | 1598 | void force_sig(int sig) |
1599 | { | 1599 | { |
1600 | force_sig_info(sig, SEND_SIG_PRIV, p); | 1600 | force_sig_info(sig, SEND_SIG_PRIV, current); |
1601 | } | 1601 | } |
1602 | EXPORT_SYMBOL(force_sig); | 1602 | EXPORT_SYMBOL(force_sig); |
1603 | 1603 | ||
@@ -1617,7 +1617,7 @@ void force_sigsegv(int sig) | |||
1617 | p->sighand->action[sig - 1].sa.sa_handler = SIG_DFL; | 1617 | p->sighand->action[sig - 1].sa.sa_handler = SIG_DFL; |
1618 | spin_unlock_irqrestore(&p->sighand->siglock, flags); | 1618 | spin_unlock_irqrestore(&p->sighand->siglock, flags); |
1619 | } | 1619 | } |
1620 | force_sig(SIGSEGV, p); | 1620 | force_sig(SIGSEGV); |
1621 | } | 1621 | } |
1622 | 1622 | ||
1623 | int force_sig_fault(int sig, int code, void __user *addr | 1623 | int force_sig_fault(int sig, int code, void __user *addr |
diff --git a/security/safesetid/lsm.c b/security/safesetid/lsm.c index cecd38e2ac80..06d4259f9ab1 100644 --- a/security/safesetid/lsm.c +++ b/security/safesetid/lsm.c | |||
@@ -111,7 +111,7 @@ static int check_uid_transition(kuid_t parent, kuid_t child) | |||
111 | * that could arise from a missing whitelist entry preventing a | 111 | * that could arise from a missing whitelist entry preventing a |
112 | * privileged process from dropping to a lesser-privileged one. | 112 | * privileged process from dropping to a lesser-privileged one. |
113 | */ | 113 | */ |
114 | force_sig(SIGKILL, current); | 114 | force_sig(SIGKILL); |
115 | return -EACCES; | 115 | return -EACCES; |
116 | } | 116 | } |
117 | 117 | ||
@@ -203,7 +203,7 @@ static int safesetid_task_fix_setuid(struct cred *new, | |||
203 | break; | 203 | break; |
204 | default: | 204 | default: |
205 | pr_warn("Unknown setid state %d\n", flags); | 205 | pr_warn("Unknown setid state %d\n", flags); |
206 | force_sig(SIGKILL, current); | 206 | force_sig(SIGKILL); |
207 | return -EINVAL; | 207 | return -EINVAL; |
208 | } | 208 | } |
209 | return 0; | 209 | return 0; |