diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2019-05-23 12:04:24 -0400 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2019-05-29 10:31:43 -0400 |
commit | 2e1661d2673667d886cd40ad9f414cb6db48d8da (patch) | |
tree | 5a2c32eb8a5c575bfb5c7013f5d9d427f5c06c34 | |
parent | 91ca180dbdd687d45fe4aab055b02d29c91b90df (diff) |
signal: Remove the task parameter from force_sig_fault
As synchronous exceptions really only make sense against the current
task (otherwise how are you synchronous) remove the task parameter
from from force_sig_fault to make it explicit that is what is going
on.
The two known exceptions that deliver a synchronous exception to a
stopped ptraced task have already been changed to
force_sig_fault_to_task.
The callers have been changed with the following emacs regular expression
(with obvious variations on the architectures that take more arguments)
to avoid typos:
force_sig_fault[(]\([^,]+\)[,]\([^,]+\)[,]\([^,]+\)[,]\W+current[)]
->
force_sig_fault(\1,\2,\3)
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
67 files changed, 137 insertions, 151 deletions
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c index bc9627698796..f6b9664ac504 100644 --- a/arch/alpha/kernel/traps.c +++ b/arch/alpha/kernel/traps.c | |||
@@ -402,7 +402,7 @@ do_entDbg(struct pt_regs *regs) | |||
402 | { | 402 | { |
403 | die_if_kernel("Instruction fault", regs, 0, NULL); | 403 | die_if_kernel("Instruction fault", regs, 0, NULL); |
404 | 404 | ||
405 | force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)regs->pc, 0, current); | 405 | force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)regs->pc, 0); |
406 | } | 406 | } |
407 | 407 | ||
408 | 408 | ||
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index 188fc9256baf..741e61ef9d3f 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c | |||
@@ -221,13 +221,13 @@ retry: | |||
221 | up_read(&mm->mmap_sem); | 221 | up_read(&mm->mmap_sem); |
222 | /* Send a sigbus, regardless of whether we were in kernel | 222 | /* Send a sigbus, regardless of whether we were in kernel |
223 | or user mode. */ | 223 | or user mode. */ |
224 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *) address, 0, current); | 224 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *) address, 0); |
225 | if (!user_mode(regs)) | 225 | if (!user_mode(regs)) |
226 | goto no_context; | 226 | goto no_context; |
227 | return; | 227 | return; |
228 | 228 | ||
229 | do_sigsegv: | 229 | do_sigsegv: |
230 | force_sig_fault(SIGSEGV, si_code, (void __user *) address, 0, current); | 230 | force_sig_fault(SIGSEGV, si_code, (void __user *) address, 0); |
231 | return; | 231 | return; |
232 | 232 | ||
233 | #ifdef CONFIG_ALPHA_LARGE_VMALLOC | 233 | #ifdef CONFIG_ALPHA_LARGE_VMALLOC |
diff --git a/arch/arc/kernel/traps.c b/arch/arc/kernel/traps.c index e618fbb3e28d..fc56efc25488 100644 --- a/arch/arc/kernel/traps.c +++ b/arch/arc/kernel/traps.c | |||
@@ -50,7 +50,7 @@ unhandled_exception(const char *str, struct pt_regs *regs, | |||
50 | 50 | ||
51 | tsk->thread.fault_address = (__force unsigned int)addr; | 51 | tsk->thread.fault_address = (__force unsigned int)addr; |
52 | 52 | ||
53 | force_sig_fault(signo, si_code, addr, current); | 53 | force_sig_fault(signo, si_code, addr); |
54 | 54 | ||
55 | } else { | 55 | } else { |
56 | /* If not due to copy_(to|from)_user, we are doomed */ | 56 | /* If not due to copy_(to|from)_user, we are doomed */ |
diff --git a/arch/arc/mm/fault.c b/arch/arc/mm/fault.c index d5d4758d7e75..5001f6418e92 100644 --- a/arch/arc/mm/fault.c +++ b/arch/arc/mm/fault.c | |||
@@ -202,7 +202,7 @@ bad_area_nosemaphore: | |||
202 | /* User mode accesses just cause a SIGSEGV */ | 202 | /* User mode accesses just cause a SIGSEGV */ |
203 | if (user_mode(regs)) { | 203 | if (user_mode(regs)) { |
204 | tsk->thread.fault_address = address; | 204 | tsk->thread.fault_address = address; |
205 | force_sig_fault(SIGSEGV, si_code, (void __user *)address, current); | 205 | force_sig_fault(SIGSEGV, si_code, (void __user *)address); |
206 | return; | 206 | return; |
207 | } | 207 | } |
208 | 208 | ||
@@ -237,5 +237,5 @@ do_sigbus: | |||
237 | goto no_context; | 237 | goto no_context; |
238 | 238 | ||
239 | tsk->thread.fault_address = address; | 239 | tsk->thread.fault_address = address; |
240 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current); | 240 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); |
241 | } | 241 | } |
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index f9cbd08a9075..1512d6b5e1cf 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
@@ -204,7 +204,7 @@ void ptrace_disable(struct task_struct *child) | |||
204 | void ptrace_break(struct pt_regs *regs) | 204 | void ptrace_break(struct pt_regs *regs) |
205 | { | 205 | { |
206 | force_sig_fault(SIGTRAP, TRAP_BRKPT, | 206 | force_sig_fault(SIGTRAP, TRAP_BRKPT, |
207 | (void __user *)instruction_pointer(regs), current); | 207 | (void __user *)instruction_pointer(regs)); |
208 | } | 208 | } |
209 | 209 | ||
210 | static int break_trap(struct pt_regs *regs, unsigned int instr) | 210 | static int break_trap(struct pt_regs *regs, unsigned int instr) |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 288989c7355d..a32342fa3e4a 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -372,7 +372,7 @@ void arm_notify_die(const char *str, struct pt_regs *regs, | |||
372 | current->thread.error_code = err; | 372 | current->thread.error_code = err; |
373 | current->thread.trap_no = trap; | 373 | current->thread.trap_no = trap; |
374 | 374 | ||
375 | force_sig_fault(signo, si_code, addr, current); | 375 | force_sig_fault(signo, si_code, addr); |
376 | } else { | 376 | } else { |
377 | die(str, regs, err); | 377 | die(str, regs, err); |
378 | } | 378 | } |
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index e376883ab35b..a6fffd788c9c 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
@@ -948,7 +948,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
948 | goto fixup; | 948 | goto fixup; |
949 | 949 | ||
950 | if (ai_usermode & UM_SIGNAL) { | 950 | if (ai_usermode & UM_SIGNAL) { |
951 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr, current); | 951 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr); |
952 | } else { | 952 | } else { |
953 | /* | 953 | /* |
954 | * We're about to disable the alignment trap and return to | 954 | * We're about to disable the alignment trap and return to |
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index 03007ea4cc72..49e8ec2e9e7b 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c | |||
@@ -184,7 +184,7 @@ __do_user_fault(unsigned long addr, unsigned int fsr, unsigned int sig, | |||
184 | tsk->thread.address = addr; | 184 | tsk->thread.address = addr; |
185 | tsk->thread.error_code = fsr; | 185 | tsk->thread.error_code = fsr; |
186 | tsk->thread.trap_no = 14; | 186 | tsk->thread.trap_no = 14; |
187 | force_sig_fault(sig, code, (void __user *)addr, current); | 187 | force_sig_fault(sig, code, (void __user *)addr); |
188 | } | 188 | } |
189 | 189 | ||
190 | void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | 190 | void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs) |
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index c76a64c1bcb3..a490a4a32e77 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c | |||
@@ -259,7 +259,7 @@ void arm64_force_sig_fault(int signo, int code, void __user *addr, | |||
259 | if (signo == SIGKILL) | 259 | if (signo == SIGKILL) |
260 | force_sig(SIGKILL); | 260 | force_sig(SIGKILL); |
261 | else | 261 | else |
262 | force_sig_fault(signo, code, addr, current); | 262 | force_sig_fault(signo, code, addr); |
263 | } | 263 | } |
264 | 264 | ||
265 | void arm64_force_sig_mceerr(int code, void __user *addr, short lsb, | 265 | void arm64_force_sig_mceerr(int code, void __user *addr, short lsb, |
diff --git a/arch/c6x/kernel/traps.c b/arch/c6x/kernel/traps.c index 5c60aea3b75a..ca54d1dd2aee 100644 --- a/arch/c6x/kernel/traps.c +++ b/arch/c6x/kernel/traps.c | |||
@@ -253,7 +253,7 @@ static void do_trap(struct exception_info *except_info, struct pt_regs *regs) | |||
253 | die_if_kernel(except_info->kernel_str, regs, addr); | 253 | die_if_kernel(except_info->kernel_str, regs, addr); |
254 | 254 | ||
255 | force_sig_fault(except_info->signo, except_info->code, | 255 | force_sig_fault(except_info->signo, except_info->code, |
256 | (void __user *)addr, current); | 256 | (void __user *)addr); |
257 | } | 257 | } |
258 | 258 | ||
259 | /* | 259 | /* |
diff --git a/arch/csky/abiv1/alignment.c b/arch/csky/abiv1/alignment.c index d789be36eb4f..27ef5b2c43ab 100644 --- a/arch/csky/abiv1/alignment.c +++ b/arch/csky/abiv1/alignment.c | |||
@@ -283,7 +283,7 @@ bad_area: | |||
283 | do_exit(SIGKILL); | 283 | do_exit(SIGKILL); |
284 | } | 284 | } |
285 | 285 | ||
286 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr, current); | 286 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr); |
287 | } | 287 | } |
288 | 288 | ||
289 | static struct ctl_table alignment_tbl[4] = { | 289 | static struct ctl_table alignment_tbl[4] = { |
diff --git a/arch/csky/abiv2/fpu.c b/arch/csky/abiv2/fpu.c index e7e11344005a..86d187d4e5af 100644 --- a/arch/csky/abiv2/fpu.c +++ b/arch/csky/abiv2/fpu.c | |||
@@ -124,7 +124,7 @@ void fpu_fpe(struct pt_regs *regs) | |||
124 | code = FPE_FLTRES; | 124 | code = FPE_FLTRES; |
125 | } | 125 | } |
126 | 126 | ||
127 | force_sig_fault(sig, code, (void __user *)regs->pc, current); | 127 | force_sig_fault(sig, code, (void __user *)regs->pc); |
128 | } | 128 | } |
129 | 129 | ||
130 | #define FMFVR_FPU_REGS(vrx, vry) \ | 130 | #define FMFVR_FPU_REGS(vrx, vry) \ |
diff --git a/arch/csky/kernel/traps.c b/arch/csky/kernel/traps.c index f487a9b996ae..2792e9601ac5 100644 --- a/arch/csky/kernel/traps.c +++ b/arch/csky/kernel/traps.c | |||
@@ -106,7 +106,7 @@ void buserr(struct pt_regs *regs) | |||
106 | pr_err("User mode Bus Error\n"); | 106 | pr_err("User mode Bus Error\n"); |
107 | show_regs(regs); | 107 | show_regs(regs); |
108 | 108 | ||
109 | force_sig_fault(SIGSEGV, 0, (void __user *)regs->pc, current); | 109 | force_sig_fault(SIGSEGV, 0, (void __user *)regs->pc); |
110 | } | 110 | } |
111 | 111 | ||
112 | #define USR_BKPT 0x1464 | 112 | #define USR_BKPT 0x1464 |
diff --git a/arch/csky/mm/fault.c b/arch/csky/mm/fault.c index 18041f46ded1..f76618b630f9 100644 --- a/arch/csky/mm/fault.c +++ b/arch/csky/mm/fault.c | |||
@@ -179,7 +179,7 @@ bad_area: | |||
179 | bad_area_nosemaphore: | 179 | bad_area_nosemaphore: |
180 | /* User mode accesses just cause a SIGSEGV */ | 180 | /* User mode accesses just cause a SIGSEGV */ |
181 | if (user_mode(regs)) { | 181 | if (user_mode(regs)) { |
182 | force_sig_fault(SIGSEGV, si_code, (void __user *)address, current); | 182 | force_sig_fault(SIGSEGV, si_code, (void __user *)address); |
183 | return; | 183 | return; |
184 | } | 184 | } |
185 | 185 | ||
@@ -212,5 +212,5 @@ do_sigbus: | |||
212 | if (!user_mode(regs)) | 212 | if (!user_mode(regs)) |
213 | goto no_context; | 213 | goto no_context; |
214 | 214 | ||
215 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current); | 215 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); |
216 | } | 216 | } |
diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c index e634414361df..b8a69b2e3f3d 100644 --- a/arch/hexagon/kernel/traps.c +++ b/arch/hexagon/kernel/traps.c | |||
@@ -420,7 +420,7 @@ void do_trap0(struct pt_regs *regs) | |||
420 | * may want to use a different trap0 flavor. | 420 | * may want to use a different trap0 flavor. |
421 | */ | 421 | */ |
422 | force_sig_fault(SIGTRAP, TRAP_BRKPT, | 422 | force_sig_fault(SIGTRAP, TRAP_BRKPT, |
423 | (void __user *) pt_elr(regs), current); | 423 | (void __user *) pt_elr(regs)); |
424 | } else { | 424 | } else { |
425 | #ifdef CONFIG_KGDB | 425 | #ifdef CONFIG_KGDB |
426 | kgdb_handle_exception(pt_cause(regs), SIGTRAP, | 426 | kgdb_handle_exception(pt_cause(regs), SIGTRAP, |
diff --git a/arch/hexagon/mm/vm_fault.c b/arch/hexagon/mm/vm_fault.c index eb263e61daf4..2b3e22509cdf 100644 --- a/arch/hexagon/mm/vm_fault.c +++ b/arch/hexagon/mm/vm_fault.c | |||
@@ -148,14 +148,14 @@ good_area: | |||
148 | si_signo = SIGSEGV; | 148 | si_signo = SIGSEGV; |
149 | si_code = SEGV_ACCERR; | 149 | si_code = SEGV_ACCERR; |
150 | } | 150 | } |
151 | force_sig_fault(si_signo, si_code, (void __user *)address, current); | 151 | force_sig_fault(si_signo, si_code, (void __user *)address); |
152 | return; | 152 | return; |
153 | 153 | ||
154 | bad_area: | 154 | bad_area: |
155 | up_read(&mm->mmap_sem); | 155 | up_read(&mm->mmap_sem); |
156 | 156 | ||
157 | if (user_mode(regs)) { | 157 | if (user_mode(regs)) { |
158 | force_sig_fault(SIGSEGV, si_code, (void __user *)address, current); | 158 | force_sig_fault(SIGSEGV, si_code, (void __user *)address); |
159 | return; | 159 | return; |
160 | } | 160 | } |
161 | /* Kernel-mode fault falls through */ | 161 | /* Kernel-mode fault falls through */ |
diff --git a/arch/ia64/kernel/brl_emu.c b/arch/ia64/kernel/brl_emu.c index c0239bf77a09..782c481d7052 100644 --- a/arch/ia64/kernel/brl_emu.c +++ b/arch/ia64/kernel/brl_emu.c | |||
@@ -197,21 +197,21 @@ ia64_emulate_brl (struct pt_regs *regs, unsigned long ar_ec) | |||
197 | */ | 197 | */ |
198 | printk(KERN_DEBUG "Woah! Unimplemented Instruction Address Trap!\n"); | 198 | printk(KERN_DEBUG "Woah! Unimplemented Instruction Address Trap!\n"); |
199 | force_sig_fault(SIGILL, ILL_BADIADDR, (void __user *)NULL, | 199 | force_sig_fault(SIGILL, ILL_BADIADDR, (void __user *)NULL, |
200 | 0, 0, 0, current); | 200 | 0, 0, 0); |
201 | } else if (ia64_psr(regs)->tb) { | 201 | } else if (ia64_psr(regs)->tb) { |
202 | /* | 202 | /* |
203 | * Branch Tracing is enabled. | 203 | * Branch Tracing is enabled. |
204 | * Force a taken branch signal. | 204 | * Force a taken branch signal. |
205 | */ | 205 | */ |
206 | force_sig_fault(SIGTRAP, TRAP_BRANCH, (void __user *)NULL, | 206 | force_sig_fault(SIGTRAP, TRAP_BRANCH, (void __user *)NULL, |
207 | 0, 0, 0, current); | 207 | 0, 0, 0); |
208 | } else if (ia64_psr(regs)->ss) { | 208 | } else if (ia64_psr(regs)->ss) { |
209 | /* | 209 | /* |
210 | * Single Step is enabled. | 210 | * Single Step is enabled. |
211 | * Force a trace signal. | 211 | * Force a trace signal. |
212 | */ | 212 | */ |
213 | force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)NULL, | 213 | force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)NULL, |
214 | 0, 0, 0, current); | 214 | 0, 0, 0); |
215 | } | 215 | } |
216 | return rv; | 216 | return rv; |
217 | } | 217 | } |
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index 0a3adbfebc2a..e13cb905930f 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c | |||
@@ -176,7 +176,7 @@ __kprobes ia64_bad_break (unsigned long break_num, struct pt_regs *regs) | |||
176 | } | 176 | } |
177 | force_sig_fault(sig, code, | 177 | force_sig_fault(sig, code, |
178 | (void __user *) (regs->cr_iip + ia64_psr(regs)->ri), | 178 | (void __user *) (regs->cr_iip + ia64_psr(regs)->ri), |
179 | break_num, 0 /* clear __ISR_VALID */, 0, current); | 179 | break_num, 0 /* clear __ISR_VALID */, 0); |
180 | } | 180 | } |
181 | 181 | ||
182 | /* | 182 | /* |
@@ -353,7 +353,7 @@ handle_fpu_swa (int fp_fault, struct pt_regs *regs, unsigned long isr) | |||
353 | } | 353 | } |
354 | force_sig_fault(SIGFPE, si_code, | 354 | force_sig_fault(SIGFPE, si_code, |
355 | (void __user *) (regs->cr_iip + ia64_psr(regs)->ri), | 355 | (void __user *) (regs->cr_iip + ia64_psr(regs)->ri), |
356 | 0, __ISR_VALID, isr, current); | 356 | 0, __ISR_VALID, isr); |
357 | } | 357 | } |
358 | } else { | 358 | } else { |
359 | if (exception == -1) { | 359 | if (exception == -1) { |
@@ -373,7 +373,7 @@ handle_fpu_swa (int fp_fault, struct pt_regs *regs, unsigned long isr) | |||
373 | } | 373 | } |
374 | force_sig_fault(SIGFPE, si_code, | 374 | force_sig_fault(SIGFPE, si_code, |
375 | (void __user *) (regs->cr_iip + ia64_psr(regs)->ri), | 375 | (void __user *) (regs->cr_iip + ia64_psr(regs)->ri), |
376 | 0, __ISR_VALID, isr, current); | 376 | 0, __ISR_VALID, isr); |
377 | } | 377 | } |
378 | } | 378 | } |
379 | return 0; | 379 | return 0; |
@@ -408,7 +408,7 @@ ia64_illegal_op_fault (unsigned long ec, long arg1, long arg2, long arg3, | |||
408 | 408 | ||
409 | force_sig_fault(SIGILL, ILL_ILLOPC, | 409 | force_sig_fault(SIGILL, ILL_ILLOPC, |
410 | (void __user *) (regs.cr_iip + ia64_psr(®s)->ri), | 410 | (void __user *) (regs.cr_iip + ia64_psr(®s)->ri), |
411 | 0, 0, 0, current); | 411 | 0, 0, 0); |
412 | return rv; | 412 | return rv; |
413 | } | 413 | } |
414 | 414 | ||
@@ -483,7 +483,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa, | |||
483 | + ia64_psr(®s)->ri); | 483 | + ia64_psr(®s)->ri); |
484 | } | 484 | } |
485 | force_sig_fault(sig, code, addr, | 485 | force_sig_fault(sig, code, addr, |
486 | vector, __ISR_VALID, isr, current); | 486 | vector, __ISR_VALID, isr); |
487 | return; | 487 | return; |
488 | } else if (ia64_done_with_exception(®s)) | 488 | } else if (ia64_done_with_exception(®s)) |
489 | return; | 489 | return; |
@@ -493,7 +493,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa, | |||
493 | case 31: /* Unsupported Data Reference */ | 493 | case 31: /* Unsupported Data Reference */ |
494 | if (user_mode(®s)) { | 494 | if (user_mode(®s)) { |
495 | force_sig_fault(SIGILL, ILL_ILLOPN, (void __user *) iip, | 495 | force_sig_fault(SIGILL, ILL_ILLOPN, (void __user *) iip, |
496 | vector, __ISR_VALID, isr, current); | 496 | vector, __ISR_VALID, isr); |
497 | return; | 497 | return; |
498 | } | 498 | } |
499 | sprintf(buf, "Unsupported data reference"); | 499 | sprintf(buf, "Unsupported data reference"); |
@@ -542,7 +542,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa, | |||
542 | == NOTIFY_STOP) | 542 | == NOTIFY_STOP) |
543 | return; | 543 | return; |
544 | force_sig_fault(SIGTRAP, si_code, (void __user *) ifa, | 544 | force_sig_fault(SIGTRAP, si_code, (void __user *) ifa, |
545 | 0, __ISR_VALID, isr, current); | 545 | 0, __ISR_VALID, isr); |
546 | return; | 546 | return; |
547 | 547 | ||
548 | case 32: /* fp fault */ | 548 | case 32: /* fp fault */ |
@@ -550,7 +550,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa, | |||
550 | result = handle_fpu_swa((vector == 32) ? 1 : 0, ®s, isr); | 550 | result = handle_fpu_swa((vector == 32) ? 1 : 0, ®s, isr); |
551 | if ((result < 0) || (current->thread.flags & IA64_THREAD_FPEMU_SIGFPE)) { | 551 | if ((result < 0) || (current->thread.flags & IA64_THREAD_FPEMU_SIGFPE)) { |
552 | force_sig_fault(SIGFPE, FPE_FLTINV, (void __user *) iip, | 552 | force_sig_fault(SIGFPE, FPE_FLTINV, (void __user *) iip, |
553 | 0, __ISR_VALID, isr, current); | 553 | 0, __ISR_VALID, isr); |
554 | } | 554 | } |
555 | return; | 555 | return; |
556 | 556 | ||
@@ -578,7 +578,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa, | |||
578 | if (user_mode(®s)) { | 578 | if (user_mode(®s)) { |
579 | force_sig_fault(SIGILL, ILL_BADIADDR, | 579 | force_sig_fault(SIGILL, ILL_BADIADDR, |
580 | (void __user *) iip, | 580 | (void __user *) iip, |
581 | 0, 0, 0, current); | 581 | 0, 0, 0); |
582 | return; | 582 | return; |
583 | } | 583 | } |
584 | sprintf(buf, "Unimplemented Instruction Address fault"); | 584 | sprintf(buf, "Unimplemented Instruction Address fault"); |
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c index a167a3824b35..eb7d5df59fa3 100644 --- a/arch/ia64/kernel/unaligned.c +++ b/arch/ia64/kernel/unaligned.c | |||
@@ -1537,6 +1537,6 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs) | |||
1537 | } | 1537 | } |
1538 | force_sigbus: | 1538 | force_sigbus: |
1539 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) ifa, | 1539 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) ifa, |
1540 | 0, 0, 0, current); | 1540 | 0, 0, 0); |
1541 | goto done; | 1541 | goto done; |
1542 | } | 1542 | } |
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index 5baeb022f474..3c3a283d3172 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c | |||
@@ -249,7 +249,7 @@ retry: | |||
249 | } | 249 | } |
250 | if (user_mode(regs)) { | 250 | if (user_mode(regs)) { |
251 | force_sig_fault(signal, code, (void __user *) address, | 251 | force_sig_fault(signal, code, (void __user *) address, |
252 | 0, __ISR_VALID, isr, current); | 252 | 0, __ISR_VALID, isr); |
253 | return; | 253 | return; |
254 | } | 254 | } |
255 | 255 | ||
diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index 2b6e143abd73..344f93d36a9a 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c | |||
@@ -1127,7 +1127,7 @@ asmlinkage void trap_c(struct frame *fp) | |||
1127 | addr = (void __user*) fp->un.fmtb.daddr; | 1127 | addr = (void __user*) fp->un.fmtb.daddr; |
1128 | break; | 1128 | break; |
1129 | } | 1129 | } |
1130 | force_sig_fault(sig, si_code, addr, current); | 1130 | force_sig_fault(sig, si_code, addr); |
1131 | } | 1131 | } |
1132 | 1132 | ||
1133 | void die_if_kernel (char *str, struct pt_regs *fp, int nr) | 1133 | void die_if_kernel (char *str, struct pt_regs *fp, int nr) |
@@ -1159,6 +1159,6 @@ asmlinkage void fpsp040_die(void) | |||
1159 | #ifdef CONFIG_M68KFPU_EMU | 1159 | #ifdef CONFIG_M68KFPU_EMU |
1160 | asmlinkage void fpemu_signal(int signal, int code, void *addr) | 1160 | asmlinkage void fpemu_signal(int signal, int code, void *addr) |
1161 | { | 1161 | { |
1162 | force_sig_fault(signal, code, addr, current); | 1162 | force_sig_fault(signal, code, addr); |
1163 | } | 1163 | } |
1164 | #endif | 1164 | #endif |
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c index 9b6163c05a75..e9b1d7585b43 100644 --- a/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c | |||
@@ -30,13 +30,13 @@ int send_fault_sig(struct pt_regs *regs) | |||
30 | pr_debug("send_fault_sig: %p,%d,%d\n", addr, signo, si_code); | 30 | pr_debug("send_fault_sig: %p,%d,%d\n", addr, signo, si_code); |
31 | 31 | ||
32 | if (user_mode(regs)) { | 32 | if (user_mode(regs)) { |
33 | force_sig_fault(signo, si_code, addr, current); | 33 | force_sig_fault(signo, si_code, addr); |
34 | } else { | 34 | } else { |
35 | if (fixup_exception(regs)) | 35 | if (fixup_exception(regs)) |
36 | return -1; | 36 | return -1; |
37 | 37 | ||
38 | //if (signo == SIGBUS) | 38 | //if (signo == SIGBUS) |
39 | // force_sig_fault(si_signo, si_code, addr, current); | 39 | // force_sig_fault(si_signo, si_code, addr); |
40 | 40 | ||
41 | /* | 41 | /* |
42 | * Oops. The kernel tried to access some bad page. We'll have to | 42 | * Oops. The kernel tried to access some bad page. We'll have to |
diff --git a/arch/microblaze/kernel/exceptions.c b/arch/microblaze/kernel/exceptions.c index eafff21fcb0e..cf99c411503e 100644 --- a/arch/microblaze/kernel/exceptions.c +++ b/arch/microblaze/kernel/exceptions.c | |||
@@ -63,7 +63,7 @@ void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr) | |||
63 | if (kernel_mode(regs)) | 63 | if (kernel_mode(regs)) |
64 | die("Exception in kernel mode", regs, signr); | 64 | die("Exception in kernel mode", regs, signr); |
65 | 65 | ||
66 | force_sig_fault(signr, code, (void __user *)addr, current); | 66 | force_sig_fault(signr, code, (void __user *)addr); |
67 | } | 67 | } |
68 | 68 | ||
69 | asmlinkage void full_exception(struct pt_regs *regs, unsigned int type, | 69 | asmlinkage void full_exception(struct pt_regs *regs, unsigned int type, |
diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c index 202ad6a494f5..e6a810b0c7ad 100644 --- a/arch/microblaze/mm/fault.c +++ b/arch/microblaze/mm/fault.c | |||
@@ -289,7 +289,7 @@ out_of_memory: | |||
289 | do_sigbus: | 289 | do_sigbus: |
290 | up_read(&mm->mmap_sem); | 290 | up_read(&mm->mmap_sem); |
291 | if (user_mode(regs)) { | 291 | if (user_mode(regs)) { |
292 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current); | 292 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); |
293 | return; | 293 | return; |
294 | } | 294 | } |
295 | bad_page_fault(regs, address, SIGBUS); | 295 | bad_page_fault(regs, address, SIGBUS); |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 62df48b6fb46..be4a7b25269c 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -705,7 +705,7 @@ asmlinkage void do_ov(struct pt_regs *regs) | |||
705 | prev_state = exception_enter(); | 705 | prev_state = exception_enter(); |
706 | die_if_kernel("Integer overflow", regs); | 706 | die_if_kernel("Integer overflow", regs); |
707 | 707 | ||
708 | force_sig_fault(SIGFPE, FPE_INTOVF, (void __user *)regs->cp0_epc, current); | 708 | force_sig_fault(SIGFPE, FPE_INTOVF, (void __user *)regs->cp0_epc); |
709 | exception_exit(prev_state); | 709 | exception_exit(prev_state); |
710 | } | 710 | } |
711 | 711 | ||
@@ -750,7 +750,7 @@ int process_fpemu_return(int sig, void __user *fault_addr, unsigned long fcr31) | |||
750 | return 1; | 750 | return 1; |
751 | 751 | ||
752 | case SIGBUS: | 752 | case SIGBUS: |
753 | force_sig_fault(SIGBUS, BUS_ADRERR, fault_addr, current); | 753 | force_sig_fault(SIGBUS, BUS_ADRERR, fault_addr); |
754 | return 1; | 754 | return 1; |
755 | 755 | ||
756 | case SIGSEGV: | 756 | case SIGSEGV: |
@@ -761,7 +761,7 @@ int process_fpemu_return(int sig, void __user *fault_addr, unsigned long fcr31) | |||
761 | else | 761 | else |
762 | si_code = SEGV_MAPERR; | 762 | si_code = SEGV_MAPERR; |
763 | up_read(¤t->mm->mmap_sem); | 763 | up_read(¤t->mm->mmap_sem); |
764 | force_sig_fault(SIGSEGV, si_code, fault_addr, current); | 764 | force_sig_fault(SIGSEGV, si_code, fault_addr); |
765 | return 1; | 765 | return 1; |
766 | 766 | ||
767 | default: | 767 | default: |
@@ -943,7 +943,7 @@ void do_trap_or_bp(struct pt_regs *regs, unsigned int code, int si_code, | |||
943 | die_if_kernel(b, regs); | 943 | die_if_kernel(b, regs); |
944 | force_sig_fault(SIGFPE, | 944 | force_sig_fault(SIGFPE, |
945 | code == BRK_DIVZERO ? FPE_INTDIV : FPE_INTOVF, | 945 | code == BRK_DIVZERO ? FPE_INTDIV : FPE_INTOVF, |
946 | (void __user *) regs->cp0_epc, current); | 946 | (void __user *) regs->cp0_epc); |
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); |
@@ -968,7 +968,7 @@ void do_trap_or_bp(struct pt_regs *regs, unsigned int code, int si_code, | |||
968 | scnprintf(b, sizeof(b), "%s instruction in kernel code", str); | 968 | scnprintf(b, sizeof(b), "%s instruction in kernel code", str); |
969 | die_if_kernel(b, regs); | 969 | die_if_kernel(b, regs); |
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); |
972 | } else { | 972 | } else { |
973 | force_sig(SIGTRAP); | 973 | force_sig(SIGTRAP); |
974 | } | 974 | } |
@@ -1521,7 +1521,7 @@ asmlinkage void do_watch(struct pt_regs *regs) | |||
1521 | if (test_tsk_thread_flag(current, TIF_LOAD_WATCH)) { | 1521 | if (test_tsk_thread_flag(current, TIF_LOAD_WATCH)) { |
1522 | mips_read_watch_registers(); | 1522 | mips_read_watch_registers(); |
1523 | local_irq_enable(); | 1523 | local_irq_enable(); |
1524 | force_sig_fault(SIGTRAP, TRAP_HWBKPT, NULL, current); | 1524 | force_sig_fault(SIGTRAP, TRAP_HWBKPT, NULL); |
1525 | } else { | 1525 | } else { |
1526 | mips_clear_watch_registers(); | 1526 | mips_clear_watch_registers(); |
1527 | local_irq_enable(); | 1527 | local_irq_enable(); |
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index e63abd492f65..f589aa8f47d9 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c | |||
@@ -223,7 +223,7 @@ bad_area_nosemaphore: | |||
223 | pr_cont("\n"); | 223 | pr_cont("\n"); |
224 | } | 224 | } |
225 | current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f; | 225 | current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f; |
226 | force_sig_fault(SIGSEGV, si_code, (void __user *)address, current); | 226 | force_sig_fault(SIGSEGV, si_code, (void __user *)address); |
227 | return; | 227 | return; |
228 | } | 228 | } |
229 | 229 | ||
@@ -279,7 +279,7 @@ do_sigbus: | |||
279 | #endif | 279 | #endif |
280 | current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f; | 280 | current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f; |
281 | tsk->thread.cp0_badvaddr = address; | 281 | tsk->thread.cp0_badvaddr = address; |
282 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current); | 282 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); |
283 | 283 | ||
284 | return; | 284 | return; |
285 | #ifndef CONFIG_64BIT | 285 | #ifndef CONFIG_64BIT |
diff --git a/arch/nds32/kernel/fpu.c b/arch/nds32/kernel/fpu.c index fddd40c7a16f..1f8694c6bd5a 100644 --- a/arch/nds32/kernel/fpu.c +++ b/arch/nds32/kernel/fpu.c | |||
@@ -246,7 +246,7 @@ inline void handle_fpu_exception(struct pt_regs *regs) | |||
246 | } | 246 | } |
247 | 247 | ||
248 | force_sig_fault(si_signo, si_code, | 248 | force_sig_fault(si_signo, si_code, |
249 | (void __user *)instruction_pointer(regs), current); | 249 | (void __user *)instruction_pointer(regs)); |
250 | done: | 250 | done: |
251 | own_fpu(); | 251 | own_fpu(); |
252 | } | 252 | } |
diff --git a/arch/nds32/kernel/traps.c b/arch/nds32/kernel/traps.c index a16e97f7bc75..f4d386b52622 100644 --- a/arch/nds32/kernel/traps.c +++ b/arch/nds32/kernel/traps.c | |||
@@ -205,7 +205,7 @@ int bad_syscall(int n, struct pt_regs *regs) | |||
205 | } | 205 | } |
206 | 206 | ||
207 | force_sig_fault(SIGILL, ILL_ILLTRP, | 207 | force_sig_fault(SIGILL, ILL_ILLTRP, |
208 | (void __user *)instruction_pointer(regs) - 4, current); | 208 | (void __user *)instruction_pointer(regs) - 4); |
209 | die_if_kernel("Oops - bad syscall", regs, n); | 209 | die_if_kernel("Oops - bad syscall", regs, n); |
210 | return regs->uregs[0]; | 210 | return regs->uregs[0]; |
211 | } | 211 | } |
@@ -263,7 +263,7 @@ static void send_sigtrap(struct pt_regs *regs, int error_code, int si_code) | |||
263 | tsk->thread.error_code = error_code; | 263 | tsk->thread.error_code = error_code; |
264 | 264 | ||
265 | force_sig_fault(SIGTRAP, si_code, | 265 | force_sig_fault(SIGTRAP, si_code, |
266 | (void __user *)instruction_pointer(regs), current); | 266 | (void __user *)instruction_pointer(regs)); |
267 | } | 267 | } |
268 | 268 | ||
269 | void do_debug_trap(unsigned long entry, unsigned long addr, | 269 | void do_debug_trap(unsigned long entry, unsigned long addr, |
diff --git a/arch/nds32/mm/fault.c b/arch/nds32/mm/fault.c index 38441113c202..064ae5d2159d 100644 --- a/arch/nds32/mm/fault.c +++ b/arch/nds32/mm/fault.c | |||
@@ -271,7 +271,7 @@ bad_area_nosemaphore: | |||
271 | tsk->thread.address = addr; | 271 | tsk->thread.address = addr; |
272 | tsk->thread.error_code = error_code; | 272 | tsk->thread.error_code = error_code; |
273 | tsk->thread.trap_no = entry; | 273 | tsk->thread.trap_no = entry; |
274 | force_sig_fault(SIGSEGV, si_code, (void __user *)addr, current); | 274 | force_sig_fault(SIGSEGV, si_code, (void __user *)addr); |
275 | return; | 275 | return; |
276 | } | 276 | } |
277 | 277 | ||
@@ -340,7 +340,7 @@ do_sigbus: | |||
340 | tsk->thread.address = addr; | 340 | tsk->thread.address = addr; |
341 | tsk->thread.error_code = error_code; | 341 | tsk->thread.error_code = error_code; |
342 | tsk->thread.trap_no = entry; | 342 | tsk->thread.trap_no = entry; |
343 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)addr, current); | 343 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)addr); |
344 | 344 | ||
345 | return; | 345 | return; |
346 | 346 | ||
diff --git a/arch/nios2/kernel/traps.c b/arch/nios2/kernel/traps.c index 3bc3cd22b750..486db793923c 100644 --- a/arch/nios2/kernel/traps.c +++ b/arch/nios2/kernel/traps.c | |||
@@ -26,7 +26,7 @@ static DEFINE_SPINLOCK(die_lock); | |||
26 | 26 | ||
27 | static void _send_sig(int signo, int code, unsigned long addr) | 27 | static void _send_sig(int signo, int code, unsigned long addr) |
28 | { | 28 | { |
29 | force_sig_fault(signo, code, (void __user *) addr, current); | 29 | force_sig_fault(signo, code, (void __user *) addr); |
30 | } | 30 | } |
31 | 31 | ||
32 | void die(const char *str, struct pt_regs *regs, long err) | 32 | void die(const char *str, struct pt_regs *regs, long err) |
diff --git a/arch/openrisc/kernel/traps.c b/arch/openrisc/kernel/traps.c index 0fad2e46ff43..a4cc6e59c57f 100644 --- a/arch/openrisc/kernel/traps.c +++ b/arch/openrisc/kernel/traps.c | |||
@@ -249,7 +249,7 @@ void __init trap_init(void) | |||
249 | 249 | ||
250 | asmlinkage void do_trap(struct pt_regs *regs, unsigned long address) | 250 | asmlinkage void do_trap(struct pt_regs *regs, unsigned long address) |
251 | { | 251 | { |
252 | force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)address, current); | 252 | force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)address); |
253 | 253 | ||
254 | regs->pc += 4; | 254 | regs->pc += 4; |
255 | } | 255 | } |
@@ -258,7 +258,7 @@ asmlinkage void do_unaligned_access(struct pt_regs *regs, unsigned long address) | |||
258 | { | 258 | { |
259 | if (user_mode(regs)) { | 259 | if (user_mode(regs)) { |
260 | /* Send a SIGBUS */ | 260 | /* Send a SIGBUS */ |
261 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)address, current); | 261 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)address); |
262 | } else { | 262 | } else { |
263 | printk("KERNEL: Unaligned Access 0x%.8lx\n", address); | 263 | printk("KERNEL: Unaligned Access 0x%.8lx\n", address); |
264 | show_registers(regs); | 264 | show_registers(regs); |
@@ -271,7 +271,7 @@ asmlinkage void do_bus_fault(struct pt_regs *regs, unsigned long address) | |||
271 | { | 271 | { |
272 | if (user_mode(regs)) { | 272 | if (user_mode(regs)) { |
273 | /* Send a SIGBUS */ | 273 | /* Send a SIGBUS */ |
274 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current); | 274 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); |
275 | } else { /* Kernel mode */ | 275 | } else { /* Kernel mode */ |
276 | printk("KERNEL: Bus error (SIGBUS) 0x%.8lx\n", address); | 276 | printk("KERNEL: Bus error (SIGBUS) 0x%.8lx\n", address); |
277 | show_registers(regs); | 277 | show_registers(regs); |
@@ -466,7 +466,7 @@ asmlinkage void do_illegal_instruction(struct pt_regs *regs, | |||
466 | 466 | ||
467 | if (user_mode(regs)) { | 467 | if (user_mode(regs)) { |
468 | /* Send a SIGILL */ | 468 | /* Send a SIGILL */ |
469 | force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)address, current); | 469 | force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)address); |
470 | } else { /* Kernel mode */ | 470 | } else { /* Kernel mode */ |
471 | printk("KERNEL: Illegal instruction (SIGILL) 0x%.8lx\n", | 471 | printk("KERNEL: Illegal instruction (SIGILL) 0x%.8lx\n", |
472 | address); | 472 | address); |
diff --git a/arch/openrisc/mm/fault.c b/arch/openrisc/mm/fault.c index f8b3a5a6ba3a..ae9468c22c9d 100644 --- a/arch/openrisc/mm/fault.c +++ b/arch/openrisc/mm/fault.c | |||
@@ -213,7 +213,7 @@ bad_area_nosemaphore: | |||
213 | /* User mode accesses just cause a SIGSEGV */ | 213 | /* User mode accesses just cause a SIGSEGV */ |
214 | 214 | ||
215 | if (user_mode(regs)) { | 215 | if (user_mode(regs)) { |
216 | force_sig_fault(SIGSEGV, si_code, (void __user *)address, current); | 216 | force_sig_fault(SIGSEGV, si_code, (void __user *)address); |
217 | return; | 217 | return; |
218 | } | 218 | } |
219 | 219 | ||
@@ -278,7 +278,7 @@ do_sigbus: | |||
278 | * Send a sigbus, regardless of whether we were in kernel | 278 | * Send a sigbus, regardless of whether we were in kernel |
279 | * or user mode. | 279 | * or user mode. |
280 | */ | 280 | */ |
281 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current); | 281 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); |
282 | 282 | ||
283 | /* Kernel mode? Handle exceptions or die */ | 283 | /* Kernel mode? Handle exceptions or die */ |
284 | if (!user_mode(regs)) | 284 | if (!user_mode(regs)) |
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index 096e319adeb3..58dcf445e32f 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c | |||
@@ -275,7 +275,7 @@ void die_if_kernel(char *str, struct pt_regs *regs, long err) | |||
275 | static void handle_gdb_break(struct pt_regs *regs, int wot) | 275 | static void handle_gdb_break(struct pt_regs *regs, int wot) |
276 | { | 276 | { |
277 | force_sig_fault(SIGTRAP, wot, | 277 | force_sig_fault(SIGTRAP, wot, |
278 | (void __user *) (regs->iaoq[0] & ~3), current); | 278 | (void __user *) (regs->iaoq[0] & ~3)); |
279 | } | 279 | } |
280 | 280 | ||
281 | static void handle_break(struct pt_regs *regs) | 281 | static void handle_break(struct pt_regs *regs) |
@@ -609,13 +609,13 @@ void notrace handle_interruption(int code, struct pt_regs *regs) | |||
609 | si_code = ILL_PRVREG; | 609 | si_code = ILL_PRVREG; |
610 | give_sigill: | 610 | give_sigill: |
611 | force_sig_fault(SIGILL, si_code, | 611 | force_sig_fault(SIGILL, si_code, |
612 | (void __user *) regs->iaoq[0], current); | 612 | (void __user *) regs->iaoq[0]); |
613 | return; | 613 | return; |
614 | 614 | ||
615 | case 12: | 615 | case 12: |
616 | /* Overflow Trap, let the userland signal handler do the cleanup */ | 616 | /* Overflow Trap, let the userland signal handler do the cleanup */ |
617 | force_sig_fault(SIGFPE, FPE_INTOVF, | 617 | force_sig_fault(SIGFPE, FPE_INTOVF, |
618 | (void __user *) regs->iaoq[0], current); | 618 | (void __user *) regs->iaoq[0]); |
619 | return; | 619 | return; |
620 | 620 | ||
621 | case 13: | 621 | case 13: |
@@ -627,7 +627,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs) | |||
627 | * to by si_addr. | 627 | * to by si_addr. |
628 | */ | 628 | */ |
629 | force_sig_fault(SIGFPE, FPE_CONDTRAP, | 629 | force_sig_fault(SIGFPE, FPE_CONDTRAP, |
630 | (void __user *) regs->iaoq[0], current); | 630 | (void __user *) regs->iaoq[0]); |
631 | return; | 631 | return; |
632 | } | 632 | } |
633 | /* The kernel doesn't want to handle condition codes */ | 633 | /* The kernel doesn't want to handle condition codes */ |
@@ -739,7 +739,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs) | |||
739 | force_sig_fault(SIGSEGV, SEGV_MAPERR, | 739 | force_sig_fault(SIGSEGV, SEGV_MAPERR, |
740 | (code == 7)? | 740 | (code == 7)? |
741 | ((void __user *) regs->iaoq[0]) : | 741 | ((void __user *) regs->iaoq[0]) : |
742 | ((void __user *) regs->ior), current); | 742 | ((void __user *) regs->ior)); |
743 | return; | 743 | return; |
744 | 744 | ||
745 | case 28: | 745 | case 28: |
@@ -754,7 +754,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs) | |||
754 | task_pid_nr(current), current->comm); | 754 | task_pid_nr(current), current->comm); |
755 | /* SIGBUS, for lack of a better one. */ | 755 | /* SIGBUS, for lack of a better one. */ |
756 | force_sig_fault(SIGBUS, BUS_OBJERR, | 756 | force_sig_fault(SIGBUS, BUS_OBJERR, |
757 | (void __user *)regs->ior, current); | 757 | (void __user *)regs->ior); |
758 | return; | 758 | return; |
759 | } | 759 | } |
760 | pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC); | 760 | pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC); |
@@ -770,7 +770,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs) | |||
770 | code, fault_space, | 770 | code, fault_space, |
771 | task_pid_nr(current), current->comm); | 771 | task_pid_nr(current), current->comm); |
772 | force_sig_fault(SIGSEGV, SEGV_MAPERR, | 772 | force_sig_fault(SIGSEGV, SEGV_MAPERR, |
773 | (void __user *)regs->ior, current); | 773 | (void __user *)regs->ior); |
774 | return; | 774 | return; |
775 | } | 775 | } |
776 | } | 776 | } |
diff --git a/arch/parisc/kernel/unaligned.c b/arch/parisc/kernel/unaligned.c index 932bfc0b7cd8..3ccc3a69469c 100644 --- a/arch/parisc/kernel/unaligned.c +++ b/arch/parisc/kernel/unaligned.c | |||
@@ -690,14 +690,14 @@ void handle_unaligned(struct pt_regs *regs) | |||
690 | if (ret == ERR_PAGEFAULT) | 690 | if (ret == ERR_PAGEFAULT) |
691 | { | 691 | { |
692 | force_sig_fault(SIGSEGV, SEGV_MAPERR, | 692 | force_sig_fault(SIGSEGV, SEGV_MAPERR, |
693 | (void __user *)regs->ior, current); | 693 | (void __user *)regs->ior); |
694 | } | 694 | } |
695 | else | 695 | else |
696 | { | 696 | { |
697 | force_sigbus: | 697 | force_sigbus: |
698 | /* couldn't handle it ... */ | 698 | /* couldn't handle it ... */ |
699 | force_sig_fault(SIGBUS, BUS_ADRALN, | 699 | force_sig_fault(SIGBUS, BUS_ADRALN, |
700 | (void __user *)regs->ior, current); | 700 | (void __user *)regs->ior); |
701 | } | 701 | } |
702 | 702 | ||
703 | return; | 703 | return; |
diff --git a/arch/parisc/math-emu/driver.c b/arch/parisc/math-emu/driver.c index 0590e05571d1..f3e0bddcbb38 100644 --- a/arch/parisc/math-emu/driver.c +++ b/arch/parisc/math-emu/driver.c | |||
@@ -117,7 +117,7 @@ handle_fpe(struct pt_regs *regs) | |||
117 | memcpy(regs->fr, frcopy, sizeof regs->fr); | 117 | memcpy(regs->fr, frcopy, sizeof regs->fr); |
118 | if (signalcode != 0) { | 118 | if (signalcode != 0) { |
119 | force_sig_fault(signalcode >> 24, signalcode & 0xffffff, | 119 | force_sig_fault(signalcode >> 24, signalcode & 0xffffff, |
120 | (void __user *) regs->iaoq[0], current); | 120 | (void __user *) regs->iaoq[0]); |
121 | return -1; | 121 | return -1; |
122 | } | 122 | } |
123 | 123 | ||
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c index 56ceacb3401d..6dd4669ce7a5 100644 --- a/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c | |||
@@ -409,7 +409,7 @@ bad_area: | |||
409 | #endif | 409 | #endif |
410 | show_signal_msg(regs, code, address, tsk, vma); | 410 | show_signal_msg(regs, code, address, tsk, vma); |
411 | 411 | ||
412 | force_sig_fault(signo, si_code, (void __user *) address, current); | 412 | force_sig_fault(signo, si_code, (void __user *) address); |
413 | return; | 413 | return; |
414 | } | 414 | } |
415 | 415 | ||
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 87da40129927..1b5b1477afa2 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -643,7 +643,7 @@ void do_break (struct pt_regs *regs, unsigned long address, | |||
643 | hw_breakpoint_disable(); | 643 | hw_breakpoint_disable(); |
644 | 644 | ||
645 | /* Deliver the signal to userspace */ | 645 | /* Deliver the signal to userspace */ |
646 | force_sig_fault(SIGTRAP, TRAP_HWBKPT, (void __user *)address, current); | 646 | force_sig_fault(SIGTRAP, TRAP_HWBKPT, (void __user *)address); |
647 | } | 647 | } |
648 | #endif /* CONFIG_PPC_ADV_DEBUG_REGS */ | 648 | #endif /* CONFIG_PPC_ADV_DEBUG_REGS */ |
649 | 649 | ||
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 83e59fdaa62d..dfc61f2f69a0 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -301,7 +301,7 @@ NOKPROBE_SYMBOL(die); | |||
301 | 301 | ||
302 | void user_single_step_report(struct pt_regs *regs) | 302 | void user_single_step_report(struct pt_regs *regs) |
303 | { | 303 | { |
304 | force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)regs->nip, current); | 304 | force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)regs->nip); |
305 | } | 305 | } |
306 | 306 | ||
307 | static void show_signal_msg(int signr, struct pt_regs *regs, int code, | 307 | static void show_signal_msg(int signr, struct pt_regs *regs, int code, |
@@ -367,7 +367,7 @@ void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr) | |||
367 | if (!exception_common(signr, regs, code, addr)) | 367 | if (!exception_common(signr, regs, code, addr)) |
368 | return; | 368 | return; |
369 | 369 | ||
370 | force_sig_fault(signr, code, (void __user *)addr, current); | 370 | force_sig_fault(signr, code, (void __user *)addr); |
371 | } | 371 | } |
372 | 372 | ||
373 | /* | 373 | /* |
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 6ed6c341c670..02c70fa535ef 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
@@ -187,7 +187,7 @@ static int do_sigbus(struct pt_regs *regs, unsigned long address, | |||
187 | } | 187 | } |
188 | 188 | ||
189 | #endif | 189 | #endif |
190 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current); | 190 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); |
191 | return 0; | 191 | return 0; |
192 | } | 192 | } |
193 | 193 | ||
diff --git a/arch/powerpc/platforms/cell/spufs/fault.c b/arch/powerpc/platforms/cell/spufs/fault.c index 971ac43b5d60..6634c0c5ed9e 100644 --- a/arch/powerpc/platforms/cell/spufs/fault.c +++ b/arch/powerpc/platforms/cell/spufs/fault.c | |||
@@ -44,22 +44,21 @@ static void spufs_handle_event(struct spu_context *ctx, | |||
44 | 44 | ||
45 | switch (type) { | 45 | switch (type) { |
46 | case SPE_EVENT_INVALID_DMA: | 46 | case SPE_EVENT_INVALID_DMA: |
47 | force_sig_fault(SIGBUS, BUS_OBJERR, NULL, current); | 47 | force_sig_fault(SIGBUS, BUS_OBJERR, NULL); |
48 | break; | 48 | break; |
49 | case SPE_EVENT_SPE_DATA_STORAGE: | 49 | case SPE_EVENT_SPE_DATA_STORAGE: |
50 | ctx->ops->restart_dma(ctx); | 50 | ctx->ops->restart_dma(ctx); |
51 | force_sig_fault(SIGSEGV, SEGV_ACCERR, (void __user *)ea, | 51 | force_sig_fault(SIGSEGV, SEGV_ACCERR, (void __user *)ea); |
52 | current); | ||
53 | break; | 52 | break; |
54 | case SPE_EVENT_DMA_ALIGNMENT: | 53 | case SPE_EVENT_DMA_ALIGNMENT: |
55 | /* DAR isn't set for an alignment fault :( */ | 54 | /* DAR isn't set for an alignment fault :( */ |
56 | force_sig_fault(SIGBUS, BUS_ADRALN, NULL, current); | 55 | force_sig_fault(SIGBUS, BUS_ADRALN, NULL); |
57 | break; | 56 | break; |
58 | case SPE_EVENT_SPE_ERROR: | 57 | case SPE_EVENT_SPE_ERROR: |
59 | force_sig_fault( | 58 | force_sig_fault( |
60 | SIGILL, ILL_ILLOPC, | 59 | SIGILL, ILL_ILLOPC, |
61 | (void __user *)(unsigned long) | 60 | (void __user *)(unsigned long) |
62 | ctx->ops->npc_read(ctx) - 4, current); | 61 | ctx->ops->npc_read(ctx) - 4); |
63 | break; | 62 | break; |
64 | } | 63 | } |
65 | } | 64 | } |
diff --git a/arch/riscv/kernel/traps.c b/arch/riscv/kernel/traps.c index 6d67892dfc82..859ab550d52a 100644 --- a/arch/riscv/kernel/traps.c +++ b/arch/riscv/kernel/traps.c | |||
@@ -76,7 +76,7 @@ void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr) | |||
76 | show_regs(regs); | 76 | show_regs(regs); |
77 | } | 77 | } |
78 | 78 | ||
79 | force_sig_fault(signo, code, (void __user *)addr, current); | 79 | force_sig_fault(signo, code, (void __user *)addr); |
80 | } | 80 | } |
81 | 81 | ||
82 | static void do_trap_error(struct pt_regs *regs, int signo, int code, | 82 | static void do_trap_error(struct pt_regs *regs, int signo, int code, |
@@ -149,7 +149,7 @@ asmlinkage void do_trap_break(struct pt_regs *regs) | |||
149 | } | 149 | } |
150 | #endif /* CONFIG_GENERIC_BUG */ | 150 | #endif /* CONFIG_GENERIC_BUG */ |
151 | 151 | ||
152 | force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)(regs->sepc), current); | 152 | force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)(regs->sepc)); |
153 | } | 153 | } |
154 | 154 | ||
155 | #ifdef CONFIG_GENERIC_BUG | 155 | #ifdef CONFIG_GENERIC_BUG |
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 82e81a9f7112..ac44dbfc4a7e 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -45,7 +45,7 @@ int is_valid_bugaddr(unsigned long addr) | |||
45 | void do_report_trap(struct pt_regs *regs, int si_signo, int si_code, char *str) | 45 | void do_report_trap(struct pt_regs *regs, int si_signo, int si_code, char *str) |
46 | { | 46 | { |
47 | if (user_mode(regs)) { | 47 | if (user_mode(regs)) { |
48 | force_sig_fault(si_signo, si_code, get_trap_ip(regs), current); | 48 | force_sig_fault(si_signo, si_code, get_trap_ip(regs)); |
49 | report_user_fault(regs, si_signo, 0); | 49 | report_user_fault(regs, si_signo, 0); |
50 | } else { | 50 | } else { |
51 | const struct exception_table_entry *fixup; | 51 | const struct exception_table_entry *fixup; |
@@ -79,7 +79,7 @@ void do_per_trap(struct pt_regs *regs) | |||
79 | if (!current->ptrace) | 79 | if (!current->ptrace) |
80 | return; | 80 | return; |
81 | force_sig_fault(SIGTRAP, TRAP_HWBKPT, | 81 | force_sig_fault(SIGTRAP, TRAP_HWBKPT, |
82 | (void __force __user *) current->thread.per_event.address, current); | 82 | (void __force __user *) current->thread.per_event.address); |
83 | } | 83 | } |
84 | NOKPROBE_SYMBOL(do_per_trap); | 84 | NOKPROBE_SYMBOL(do_per_trap); |
85 | 85 | ||
@@ -165,7 +165,7 @@ void illegal_op(struct pt_regs *regs) | |||
165 | return; | 165 | return; |
166 | if (*((__u16 *) opcode) == S390_BREAKPOINT_U16) { | 166 | if (*((__u16 *) opcode) == S390_BREAKPOINT_U16) { |
167 | if (current->ptrace) | 167 | if (current->ptrace) |
168 | force_sig_fault(SIGTRAP, TRAP_BRKPT, location, current); | 168 | force_sig_fault(SIGTRAP, TRAP_BRKPT, location); |
169 | else | 169 | else |
170 | signal = SIGILL; | 170 | signal = SIGILL; |
171 | #ifdef CONFIG_UPROBES | 171 | #ifdef CONFIG_UPROBES |
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index c220399ae196..79afed544cac 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c | |||
@@ -243,8 +243,7 @@ static noinline void do_sigsegv(struct pt_regs *regs, int si_code) | |||
243 | { | 243 | { |
244 | report_user_fault(regs, SIGSEGV, 1); | 244 | report_user_fault(regs, SIGSEGV, 1); |
245 | force_sig_fault(SIGSEGV, si_code, | 245 | force_sig_fault(SIGSEGV, si_code, |
246 | (void __user *)(regs->int_parm_long & __FAIL_ADDR_MASK), | 246 | (void __user *)(regs->int_parm_long & __FAIL_ADDR_MASK)); |
247 | current); | ||
248 | } | 247 | } |
249 | 248 | ||
250 | const struct exception_table_entry *s390_search_extables(unsigned long addr) | 249 | const struct exception_table_entry *s390_search_extables(unsigned long addr) |
@@ -305,8 +304,7 @@ static noinline void do_sigbus(struct pt_regs *regs) | |||
305 | * or user mode. | 304 | * or user mode. |
306 | */ | 305 | */ |
307 | force_sig_fault(SIGBUS, BUS_ADRERR, | 306 | force_sig_fault(SIGBUS, BUS_ADRERR, |
308 | (void __user *)(regs->int_parm_long & __FAIL_ADDR_MASK), | 307 | (void __user *)(regs->int_parm_long & __FAIL_ADDR_MASK)); |
309 | current); | ||
310 | } | 308 | } |
311 | 309 | ||
312 | static noinline int signal_return(struct pt_regs *regs) | 310 | static noinline int signal_return(struct pt_regs *regs) |
diff --git a/arch/sh/kernel/hw_breakpoint.c b/arch/sh/kernel/hw_breakpoint.c index bc96b16288c1..3bd010b4c55f 100644 --- a/arch/sh/kernel/hw_breakpoint.c +++ b/arch/sh/kernel/hw_breakpoint.c | |||
@@ -338,7 +338,7 @@ static int __kprobes hw_breakpoint_handler(struct die_args *args) | |||
338 | /* Deliver the signal to userspace */ | 338 | /* Deliver the signal to userspace */ |
339 | if (!arch_check_bp_in_kernelspace(&bp->hw.info)) { | 339 | if (!arch_check_bp_in_kernelspace(&bp->hw.info)) { |
340 | force_sig_fault(SIGTRAP, TRAP_HWBKPT, | 340 | force_sig_fault(SIGTRAP, TRAP_HWBKPT, |
341 | (void __user *)NULL, current); | 341 | (void __user *)NULL); |
342 | } | 342 | } |
343 | 343 | ||
344 | rcu_read_unlock(); | 344 | rcu_read_unlock(); |
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index bd5568c8e7f0..058c6181bb30 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c | |||
@@ -533,7 +533,7 @@ uspace_segv: | |||
533 | "access (PC %lx PR %lx)\n", current->comm, regs->pc, | 533 | "access (PC %lx PR %lx)\n", current->comm, regs->pc, |
534 | regs->pr); | 534 | regs->pr); |
535 | 535 | ||
536 | force_sig_fault(SIGBUS, si_code, (void __user *)address, current); | 536 | force_sig_fault(SIGBUS, si_code, (void __user *)address); |
537 | } else { | 537 | } else { |
538 | inc_unaligned_kernel_access(); | 538 | inc_unaligned_kernel_access(); |
539 | 539 | ||
@@ -603,7 +603,7 @@ asmlinkage void do_divide_error(unsigned long r4) | |||
603 | /* Let gcc know unhandled cases don't make it past here */ | 603 | /* Let gcc know unhandled cases don't make it past here */ |
604 | return; | 604 | return; |
605 | } | 605 | } |
606 | force_sig_fault(SIGFPE, code, NULL, current); | 606 | force_sig_fault(SIGFPE, code, NULL); |
607 | } | 607 | } |
608 | #endif | 608 | #endif |
609 | 609 | ||
diff --git a/arch/sh/math-emu/math.c b/arch/sh/math-emu/math.c index fe261b0983cc..e8be0eca0444 100644 --- a/arch/sh/math-emu/math.c +++ b/arch/sh/math-emu/math.c | |||
@@ -560,7 +560,7 @@ static int ieee_fpe_handler(struct pt_regs *regs) | |||
560 | task_thread_info(tsk)->status |= TS_USEDFPU; | 560 | task_thread_info(tsk)->status |= TS_USEDFPU; |
561 | } else { | 561 | } else { |
562 | force_sig_fault(SIGFPE, FPE_FLTINV, | 562 | force_sig_fault(SIGFPE, FPE_FLTINV, |
563 | (void __user *)regs->pc, current); | 563 | (void __user *)regs->pc); |
564 | } | 564 | } |
565 | 565 | ||
566 | regs->pc = nextpc; | 566 | regs->pc = nextpc; |
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index 851a3cbb2b9c..3093bc372138 100644 --- a/arch/sh/mm/fault.c +++ b/arch/sh/mm/fault.c | |||
@@ -41,7 +41,7 @@ static inline int notify_page_fault(struct pt_regs *regs, int trap) | |||
41 | static void | 41 | static void |
42 | force_sig_info_fault(int si_signo, int si_code, unsigned long address) | 42 | force_sig_info_fault(int si_signo, int si_code, unsigned long address) |
43 | { | 43 | { |
44 | force_sig_fault(si_signo, si_code, (void __user *)address, current); | 44 | force_sig_fault(si_signo, si_code, (void __user *)address); |
45 | } | 45 | } |
46 | 46 | ||
47 | /* | 47 | /* |
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index c4bccd97f3cf..4282116e28e7 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c | |||
@@ -519,7 +519,7 @@ void synchronize_user_stack(void) | |||
519 | 519 | ||
520 | static void stack_unaligned(unsigned long sp) | 520 | static void stack_unaligned(unsigned long sp) |
521 | { | 521 | { |
522 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) sp, 0, current); | 522 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) sp, 0); |
523 | } | 523 | } |
524 | 524 | ||
525 | static const char uwfault32[] = KERN_INFO \ | 525 | static const char uwfault32[] = KERN_INFO \ |
diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c index 452e4d080855..be77538bc038 100644 --- a/arch/sparc/kernel/sys_sparc_32.c +++ b/arch/sparc/kernel/sys_sparc_32.c | |||
@@ -151,7 +151,7 @@ sparc_breakpoint (struct pt_regs *regs) | |||
151 | #ifdef DEBUG_SPARC_BREAKPOINT | 151 | #ifdef DEBUG_SPARC_BREAKPOINT |
152 | printk ("TRAP: Entering kernel PC=%x, nPC=%x\n", regs->pc, regs->npc); | 152 | printk ("TRAP: Entering kernel PC=%x, nPC=%x\n", regs->pc, regs->npc); |
153 | #endif | 153 | #endif |
154 | force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->pc, 0, current); | 154 | force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->pc, 0); |
155 | 155 | ||
156 | #ifdef DEBUG_SPARC_BREAKPOINT | 156 | #ifdef DEBUG_SPARC_BREAKPOINT |
157 | printk ("TRAP: Returning to space: PC=%x nPC=%x\n", regs->pc, regs->npc); | 157 | printk ("TRAP: Returning to space: PC=%x nPC=%x\n", regs->pc, regs->npc); |
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c index 9825ca6a6020..ccc88926bc00 100644 --- a/arch/sparc/kernel/sys_sparc_64.c +++ b/arch/sparc/kernel/sys_sparc_64.c | |||
@@ -511,7 +511,7 @@ asmlinkage void sparc_breakpoint(struct pt_regs *regs) | |||
511 | #ifdef DEBUG_SPARC_BREAKPOINT | 511 | #ifdef DEBUG_SPARC_BREAKPOINT |
512 | printk ("TRAP: Entering kernel PC=%lx, nPC=%lx\n", regs->tpc, regs->tnpc); | 512 | printk ("TRAP: Entering kernel PC=%lx, nPC=%lx\n", regs->tpc, regs->tnpc); |
513 | #endif | 513 | #endif |
514 | force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->tpc, 0, current); | 514 | force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->tpc, 0); |
515 | #ifdef DEBUG_SPARC_BREAKPOINT | 515 | #ifdef DEBUG_SPARC_BREAKPOINT |
516 | printk ("TRAP: Returning to space: PC=%lx nPC=%lx\n", regs->tpc, regs->tnpc); | 516 | printk ("TRAP: Returning to space: PC=%lx nPC=%lx\n", regs->tpc, regs->tnpc); |
517 | #endif | 517 | #endif |
diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c index bcdfc6168dd5..4ceecad556a9 100644 --- a/arch/sparc/kernel/traps_32.c +++ b/arch/sparc/kernel/traps_32.c | |||
@@ -103,7 +103,7 @@ void do_hw_interrupt(struct pt_regs *regs, unsigned long type) | |||
103 | die_if_kernel("Kernel bad trap", regs); | 103 | die_if_kernel("Kernel bad trap", regs); |
104 | 104 | ||
105 | force_sig_fault(SIGILL, ILL_ILLTRP, | 105 | force_sig_fault(SIGILL, ILL_ILLTRP, |
106 | (void __user *)regs->pc, type - 0x80, current); | 106 | (void __user *)regs->pc, type - 0x80); |
107 | } | 107 | } |
108 | 108 | ||
109 | void do_illegal_instruction(struct pt_regs *regs, unsigned long pc, unsigned long npc, | 109 | void do_illegal_instruction(struct pt_regs *regs, unsigned long pc, unsigned long npc, |
@@ -327,7 +327,7 @@ void handle_reg_access(struct pt_regs *regs, unsigned long pc, unsigned long npc | |||
327 | printk("Register Access Exception at PC %08lx NPC %08lx PSR %08lx\n", | 327 | printk("Register Access Exception at PC %08lx NPC %08lx PSR %08lx\n", |
328 | pc, npc, psr); | 328 | pc, npc, psr); |
329 | #endif | 329 | #endif |
330 | force_sig_fault(SIGBUS, BUS_OBJERR, (void __user *)pc, 0, current); | 330 | force_sig_fault(SIGBUS, BUS_OBJERR, (void __user *)pc, 0); |
331 | } | 331 | } |
332 | 332 | ||
333 | void handle_cp_disabled(struct pt_regs *regs, unsigned long pc, unsigned long npc, | 333 | void handle_cp_disabled(struct pt_regs *regs, unsigned long pc, unsigned long npc, |
diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c index 12bfc7e215ca..614d92c18506 100644 --- a/arch/sparc/kernel/traps_64.c +++ b/arch/sparc/kernel/traps_64.c | |||
@@ -107,7 +107,7 @@ void bad_trap(struct pt_regs *regs, long lvl) | |||
107 | regs->tnpc &= 0xffffffff; | 107 | regs->tnpc &= 0xffffffff; |
108 | } | 108 | } |
109 | force_sig_fault(SIGILL, ILL_ILLTRP, | 109 | force_sig_fault(SIGILL, ILL_ILLTRP, |
110 | (void __user *)regs->tpc, lvl, current); | 110 | (void __user *)regs->tpc, lvl); |
111 | } | 111 | } |
112 | 112 | ||
113 | void bad_trap_tl1(struct pt_regs *regs, long lvl) | 113 | void bad_trap_tl1(struct pt_regs *regs, long lvl) |
@@ -201,7 +201,7 @@ void spitfire_insn_access_exception(struct pt_regs *regs, unsigned long sfsr, un | |||
201 | regs->tnpc &= 0xffffffff; | 201 | regs->tnpc &= 0xffffffff; |
202 | } | 202 | } |
203 | force_sig_fault(SIGSEGV, SEGV_MAPERR, | 203 | force_sig_fault(SIGSEGV, SEGV_MAPERR, |
204 | (void __user *)regs->tpc, 0, current); | 204 | (void __user *)regs->tpc, 0); |
205 | out: | 205 | out: |
206 | exception_exit(prev_state); | 206 | exception_exit(prev_state); |
207 | } | 207 | } |
@@ -236,7 +236,7 @@ void sun4v_insn_access_exception(struct pt_regs *regs, unsigned long addr, unsig | |||
236 | regs->tpc &= 0xffffffff; | 236 | regs->tpc &= 0xffffffff; |
237 | regs->tnpc &= 0xffffffff; | 237 | regs->tnpc &= 0xffffffff; |
238 | } | 238 | } |
239 | force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *) addr, 0, current); | 239 | force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *) addr, 0); |
240 | } | 240 | } |
241 | 241 | ||
242 | void sun4v_insn_access_exception_tl1(struct pt_regs *regs, unsigned long addr, unsigned long type_ctx) | 242 | void sun4v_insn_access_exception_tl1(struct pt_regs *regs, unsigned long addr, unsigned long type_ctx) |
@@ -321,7 +321,7 @@ void spitfire_data_access_exception(struct pt_regs *regs, unsigned long sfsr, un | |||
321 | if (is_no_fault_exception(regs)) | 321 | if (is_no_fault_exception(regs)) |
322 | return; | 322 | return; |
323 | 323 | ||
324 | force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)sfar, 0, current); | 324 | force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)sfar, 0); |
325 | out: | 325 | out: |
326 | exception_exit(prev_state); | 326 | exception_exit(prev_state); |
327 | } | 327 | } |
@@ -385,16 +385,13 @@ void sun4v_data_access_exception(struct pt_regs *regs, unsigned long addr, unsig | |||
385 | */ | 385 | */ |
386 | switch (type) { | 386 | switch (type) { |
387 | case HV_FAULT_TYPE_INV_ASI: | 387 | case HV_FAULT_TYPE_INV_ASI: |
388 | force_sig_fault(SIGILL, ILL_ILLADR, (void __user *)addr, 0, | 388 | force_sig_fault(SIGILL, ILL_ILLADR, (void __user *)addr, 0); |
389 | current); | ||
390 | break; | 389 | break; |
391 | case HV_FAULT_TYPE_MCD_DIS: | 390 | case HV_FAULT_TYPE_MCD_DIS: |
392 | force_sig_fault(SIGSEGV, SEGV_ACCADI, (void __user *)addr, 0, | 391 | force_sig_fault(SIGSEGV, SEGV_ACCADI, (void __user *)addr, 0); |
393 | current); | ||
394 | break; | 392 | break; |
395 | default: | 393 | default: |
396 | force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)addr, 0, | 394 | force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)addr, 0); |
397 | current); | ||
398 | break; | 395 | break; |
399 | } | 396 | } |
400 | } | 397 | } |
@@ -571,7 +568,7 @@ static void spitfire_ue_log(unsigned long afsr, unsigned long afar, unsigned lon | |||
571 | regs->tpc &= 0xffffffff; | 568 | regs->tpc &= 0xffffffff; |
572 | regs->tnpc &= 0xffffffff; | 569 | regs->tnpc &= 0xffffffff; |
573 | } | 570 | } |
574 | force_sig_fault(SIGBUS, BUS_OBJERR, (void *)0, 0, current); | 571 | force_sig_fault(SIGBUS, BUS_OBJERR, (void *)0, 0); |
575 | } | 572 | } |
576 | 573 | ||
577 | void spitfire_access_error(struct pt_regs *regs, unsigned long status_encoded, unsigned long afar) | 574 | void spitfire_access_error(struct pt_regs *regs, unsigned long status_encoded, unsigned long afar) |
@@ -2073,7 +2070,7 @@ void do_mcd_err(struct pt_regs *regs, struct sun4v_error_entry ent) | |||
2073 | * code | 2070 | * code |
2074 | */ | 2071 | */ |
2075 | force_sig_fault(SIGSEGV, SEGV_ADIDERR, (void __user *)ent.err_raddr, | 2072 | force_sig_fault(SIGSEGV, SEGV_ADIDERR, (void __user *)ent.err_raddr, |
2076 | 0, current); | 2073 | 0); |
2077 | } | 2074 | } |
2078 | 2075 | ||
2079 | /* We run with %pil set to PIL_NORMAL_MAX and PSTATE_IE enabled in %pstate. | 2076 | /* We run with %pil set to PIL_NORMAL_MAX and PSTATE_IE enabled in %pstate. |
@@ -2187,7 +2184,7 @@ bool sun4v_nonresum_error_user_handled(struct pt_regs *regs, | |||
2187 | } | 2184 | } |
2188 | if (attrs & SUN4V_ERR_ATTRS_PIO) { | 2185 | if (attrs & SUN4V_ERR_ATTRS_PIO) { |
2189 | force_sig_fault(SIGBUS, BUS_ADRERR, | 2186 | force_sig_fault(SIGBUS, BUS_ADRERR, |
2190 | (void __user *)sun4v_get_vaddr(regs), 0, current); | 2187 | (void __user *)sun4v_get_vaddr(regs), 0); |
2191 | return true; | 2188 | return true; |
2192 | } | 2189 | } |
2193 | 2190 | ||
@@ -2344,7 +2341,7 @@ static void do_fpe_common(struct pt_regs *regs) | |||
2344 | code = FPE_FLTRES; | 2341 | code = FPE_FLTRES; |
2345 | } | 2342 | } |
2346 | force_sig_fault(SIGFPE, code, | 2343 | force_sig_fault(SIGFPE, code, |
2347 | (void __user *)regs->tpc, 0, current); | 2344 | (void __user *)regs->tpc, 0); |
2348 | } | 2345 | } |
2349 | } | 2346 | } |
2350 | 2347 | ||
@@ -2399,7 +2396,7 @@ void do_tof(struct pt_regs *regs) | |||
2399 | regs->tnpc &= 0xffffffff; | 2396 | regs->tnpc &= 0xffffffff; |
2400 | } | 2397 | } |
2401 | force_sig_fault(SIGEMT, EMT_TAGOVF, | 2398 | force_sig_fault(SIGEMT, EMT_TAGOVF, |
2402 | (void __user *)regs->tpc, 0, current); | 2399 | (void __user *)regs->tpc, 0); |
2403 | out: | 2400 | out: |
2404 | exception_exit(prev_state); | 2401 | exception_exit(prev_state); |
2405 | } | 2402 | } |
@@ -2419,7 +2416,7 @@ void do_div0(struct pt_regs *regs) | |||
2419 | regs->tnpc &= 0xffffffff; | 2416 | regs->tnpc &= 0xffffffff; |
2420 | } | 2417 | } |
2421 | force_sig_fault(SIGFPE, FPE_INTDIV, | 2418 | force_sig_fault(SIGFPE, FPE_INTDIV, |
2422 | (void __user *)regs->tpc, 0, current); | 2419 | (void __user *)regs->tpc, 0); |
2423 | out: | 2420 | out: |
2424 | exception_exit(prev_state); | 2421 | exception_exit(prev_state); |
2425 | } | 2422 | } |
@@ -2615,7 +2612,7 @@ void do_illegal_instruction(struct pt_regs *regs) | |||
2615 | } | 2612 | } |
2616 | } | 2613 | } |
2617 | } | 2614 | } |
2618 | force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)pc, 0, current); | 2615 | force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)pc, 0); |
2619 | out: | 2616 | out: |
2620 | exception_exit(prev_state); | 2617 | exception_exit(prev_state); |
2621 | } | 2618 | } |
@@ -2635,7 +2632,7 @@ void mem_address_unaligned(struct pt_regs *regs, unsigned long sfar, unsigned lo | |||
2635 | if (is_no_fault_exception(regs)) | 2632 | if (is_no_fault_exception(regs)) |
2636 | return; | 2633 | return; |
2637 | 2634 | ||
2638 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)sfar, 0, current); | 2635 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)sfar, 0); |
2639 | out: | 2636 | out: |
2640 | exception_exit(prev_state); | 2637 | exception_exit(prev_state); |
2641 | } | 2638 | } |
@@ -2653,7 +2650,7 @@ void sun4v_do_mna(struct pt_regs *regs, unsigned long addr, unsigned long type_c | |||
2653 | if (is_no_fault_exception(regs)) | 2650 | if (is_no_fault_exception(regs)) |
2654 | return; | 2651 | return; |
2655 | 2652 | ||
2656 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) addr, 0, current); | 2653 | force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) addr, 0); |
2657 | } | 2654 | } |
2658 | 2655 | ||
2659 | /* sun4v_mem_corrupt_detect_precise() - Handle precise exception on an ADI | 2656 | /* sun4v_mem_corrupt_detect_precise() - Handle precise exception on an ADI |
@@ -2700,7 +2697,7 @@ void sun4v_mem_corrupt_detect_precise(struct pt_regs *regs, unsigned long addr, | |||
2700 | regs->tpc &= 0xffffffff; | 2697 | regs->tpc &= 0xffffffff; |
2701 | regs->tnpc &= 0xffffffff; | 2698 | regs->tnpc &= 0xffffffff; |
2702 | } | 2699 | } |
2703 | force_sig_fault(SIGSEGV, SEGV_ADIPERR, (void __user *)addr, 0, current); | 2700 | force_sig_fault(SIGSEGV, SEGV_ADIPERR, (void __user *)addr, 0); |
2704 | } | 2701 | } |
2705 | 2702 | ||
2706 | void do_privop(struct pt_regs *regs) | 2703 | void do_privop(struct pt_regs *regs) |
@@ -2716,7 +2713,7 @@ void do_privop(struct pt_regs *regs) | |||
2716 | regs->tnpc &= 0xffffffff; | 2713 | regs->tnpc &= 0xffffffff; |
2717 | } | 2714 | } |
2718 | force_sig_fault(SIGILL, ILL_PRVOPC, | 2715 | force_sig_fault(SIGILL, ILL_PRVOPC, |
2719 | (void __user *)regs->tpc, 0, current); | 2716 | (void __user *)regs->tpc, 0); |
2720 | out: | 2717 | out: |
2721 | exception_exit(prev_state); | 2718 | exception_exit(prev_state); |
2722 | } | 2719 | } |
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c index 2731faf415ba..8d69de111470 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c | |||
@@ -131,7 +131,7 @@ static void __do_fault_siginfo(int code, int sig, struct pt_regs *regs, | |||
131 | show_signal_msg(regs, sig, code, | 131 | show_signal_msg(regs, sig, code, |
132 | addr, current); | 132 | addr, current); |
133 | 133 | ||
134 | force_sig_fault(sig, code, (void __user *) addr, 0, current); | 134 | force_sig_fault(sig, code, (void __user *) addr, 0); |
135 | } | 135 | } |
136 | 136 | ||
137 | static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault) | 137 | static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault) |
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c index 8f8a604c1300..83fda4d9c3b2 100644 --- a/arch/sparc/mm/fault_64.c +++ b/arch/sparc/mm/fault_64.c | |||
@@ -187,7 +187,7 @@ static void do_fault_siginfo(int code, int sig, struct pt_regs *regs, | |||
187 | if (unlikely(show_unhandled_signals)) | 187 | if (unlikely(show_unhandled_signals)) |
188 | show_signal_msg(regs, sig, code, addr, current); | 188 | show_signal_msg(regs, sig, code, addr, current); |
189 | 189 | ||
190 | force_sig_fault(sig, code, (void __user *) addr, 0, current); | 190 | force_sig_fault(sig, code, (void __user *) addr, 0); |
191 | } | 191 | } |
192 | 192 | ||
193 | static unsigned int get_fault_insn(struct pt_regs *regs, unsigned int insn) | 193 | static unsigned int get_fault_insn(struct pt_regs *regs, unsigned int insn) |
diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c index 1797dfe9ce6d..da1e96b1ec3e 100644 --- a/arch/um/kernel/ptrace.c +++ b/arch/um/kernel/ptrace.c | |||
@@ -117,8 +117,7 @@ static void send_sigtrap(struct uml_pt_regs *regs, int error_code) | |||
117 | /* Send us the fake SIGTRAP */ | 117 | /* Send us the fake SIGTRAP */ |
118 | force_sig_fault(SIGTRAP, TRAP_BRKPT, | 118 | force_sig_fault(SIGTRAP, TRAP_BRKPT, |
119 | /* User-mode eip? */ | 119 | /* User-mode eip? */ |
120 | UPT_IS_USER(regs) ? (void __user *) UPT_IP(regs) : NULL, | 120 | UPT_IS_USER(regs) ? (void __user *) UPT_IP(regs) : NULL); |
121 | current); | ||
122 | } | 121 | } |
123 | 122 | ||
124 | /* | 123 | /* |
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c index 1c943c66063f..58fe36856182 100644 --- a/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c | |||
@@ -163,8 +163,7 @@ static void show_segv_info(struct uml_pt_regs *regs) | |||
163 | static void bad_segv(struct faultinfo fi, unsigned long ip) | 163 | static void bad_segv(struct faultinfo fi, unsigned long ip) |
164 | { | 164 | { |
165 | current->thread.arch.faultinfo = fi; | 165 | current->thread.arch.faultinfo = fi; |
166 | force_sig_fault(SIGSEGV, SEGV_ACCERR, (void __user *) FAULT_ADDRESS(fi), | 166 | force_sig_fault(SIGSEGV, SEGV_ACCERR, (void __user *) FAULT_ADDRESS(fi)); |
167 | current); | ||
168 | } | 167 | } |
169 | 168 | ||
170 | void fatal_sigsegv(void) | 169 | void fatal_sigsegv(void) |
@@ -268,13 +267,11 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user, | |||
268 | 267 | ||
269 | if (err == -EACCES) { | 268 | if (err == -EACCES) { |
270 | current->thread.arch.faultinfo = fi; | 269 | current->thread.arch.faultinfo = fi; |
271 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, | 270 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); |
272 | current); | ||
273 | } else { | 271 | } else { |
274 | BUG_ON(err != -EFAULT); | 272 | BUG_ON(err != -EFAULT); |
275 | current->thread.arch.faultinfo = fi; | 273 | current->thread.arch.faultinfo = fi; |
276 | force_sig_fault(SIGSEGV, si_code, (void __user *) address, | 274 | force_sig_fault(SIGSEGV, si_code, (void __user *) address); |
277 | current); | ||
278 | } | 275 | } |
279 | 276 | ||
280 | out: | 277 | out: |
@@ -304,8 +301,7 @@ void relay_signal(int sig, struct siginfo *si, struct uml_pt_regs *regs) | |||
304 | if ((err == 0) && (siginfo_layout(sig, code) == SIL_FAULT)) { | 301 | if ((err == 0) && (siginfo_layout(sig, code) == SIL_FAULT)) { |
305 | struct faultinfo *fi = UPT_FAULTINFO(regs); | 302 | struct faultinfo *fi = UPT_FAULTINFO(regs); |
306 | current->thread.arch.faultinfo = *fi; | 303 | current->thread.arch.faultinfo = *fi; |
307 | force_sig_fault(sig, code, (void __user *)FAULT_ADDRESS(*fi), | 304 | force_sig_fault(sig, code, (void __user *)FAULT_ADDRESS(*fi)); |
308 | current); | ||
309 | } else { | 305 | } else { |
310 | printk(KERN_ERR "Attempted to relay unknown signal %d (si_code = %d) with errno %d\n", | 306 | printk(KERN_ERR "Attempted to relay unknown signal %d (si_code = %d) with errno %d\n", |
311 | sig, code, err); | 307 | sig, code, err); |
diff --git a/arch/unicore32/kernel/traps.c b/arch/unicore32/kernel/traps.c index fb376d83e043..a0878035cda7 100644 --- a/arch/unicore32/kernel/traps.c +++ b/arch/unicore32/kernel/traps.c | |||
@@ -248,7 +248,7 @@ void uc32_notify_die(const char *str, struct pt_regs *regs, | |||
248 | current->thread.error_code = err; | 248 | current->thread.error_code = err; |
249 | current->thread.trap_no = trap; | 249 | current->thread.trap_no = trap; |
250 | 250 | ||
251 | force_sig_fault(sig, code, addr, current); | 251 | force_sig_fault(sig, code, addr); |
252 | } else | 252 | } else |
253 | die(str, regs, err); | 253 | die(str, regs, err); |
254 | } | 254 | } |
diff --git a/arch/unicore32/mm/fault.c b/arch/unicore32/mm/fault.c index 313547a93513..c85ba5339c1f 100644 --- a/arch/unicore32/mm/fault.c +++ b/arch/unicore32/mm/fault.c | |||
@@ -124,7 +124,7 @@ static void __do_user_fault(unsigned long addr, unsigned int fsr, | |||
124 | tsk->thread.address = addr; | 124 | tsk->thread.address = addr; |
125 | tsk->thread.error_code = fsr; | 125 | tsk->thread.error_code = fsr; |
126 | tsk->thread.trap_no = 14; | 126 | tsk->thread.trap_no = 14; |
127 | force_sig_fault(sig, code, (void __user *)addr, current); | 127 | force_sig_fault(sig, code, (void __user *)addr); |
128 | } | 128 | } |
129 | 129 | ||
130 | void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | 130 | void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs) |
diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c index 7ea87f4ad0b7..2f31faf339d5 100644 --- a/arch/x86/entry/vsyscall/vsyscall_64.c +++ b/arch/x86/entry/vsyscall/vsyscall_64.c | |||
@@ -106,7 +106,7 @@ static bool write_ok_or_segv(unsigned long ptr, size_t size) | |||
106 | thread->cr2 = ptr; | 106 | thread->cr2 = ptr; |
107 | thread->trap_nr = X86_TRAP_PF; | 107 | thread->trap_nr = X86_TRAP_PF; |
108 | 108 | ||
109 | force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)ptr, current); | 109 | force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)ptr); |
110 | return false; | 110 | return false; |
111 | } else { | 111 | } else { |
112 | return true; | 112 | return true; |
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 34d27b2dc7a1..8f8f197389db 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c | |||
@@ -1369,7 +1369,7 @@ void send_sigtrap(struct pt_regs *regs, int error_code, int si_code) | |||
1369 | 1369 | ||
1370 | /* Send us the fake SIGTRAP */ | 1370 | /* Send us the fake SIGTRAP */ |
1371 | force_sig_fault(SIGTRAP, si_code, | 1371 | force_sig_fault(SIGTRAP, si_code, |
1372 | user_mode(regs) ? (void __user *)regs->ip : NULL, current); | 1372 | user_mode(regs) ? (void __user *)regs->ip : NULL); |
1373 | } | 1373 | } |
1374 | 1374 | ||
1375 | void user_single_step_report(struct pt_regs *regs) | 1375 | void user_single_step_report(struct pt_regs *regs) |
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index 945b9a0719dd..87095a477154 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c | |||
@@ -256,7 +256,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs, | |||
256 | if (!sicode) | 256 | if (!sicode) |
257 | force_sig(signr); | 257 | force_sig(signr); |
258 | else | 258 | else |
259 | force_sig_fault(signr, sicode, addr, current); | 259 | force_sig_fault(signr, sicode, addr); |
260 | } | 260 | } |
261 | NOKPROBE_SYMBOL(do_trap); | 261 | NOKPROBE_SYMBOL(do_trap); |
262 | 262 | ||
@@ -856,7 +856,7 @@ static void math_error(struct pt_regs *regs, int error_code, int trapnr) | |||
856 | return; | 856 | return; |
857 | 857 | ||
858 | force_sig_fault(SIGFPE, si_code, | 858 | force_sig_fault(SIGFPE, si_code, |
859 | (void __user *)uprobe_get_trap_addr(regs), current); | 859 | (void __user *)uprobe_get_trap_addr(regs)); |
860 | } | 860 | } |
861 | 861 | ||
862 | dotraplinkage void do_coprocessor_error(struct pt_regs *regs, long error_code) | 862 | dotraplinkage void do_coprocessor_error(struct pt_regs *regs, long error_code) |
diff --git a/arch/x86/kernel/umip.c b/arch/x86/kernel/umip.c index 68cdcd717c85..5b345add550f 100644 --- a/arch/x86/kernel/umip.c +++ b/arch/x86/kernel/umip.c | |||
@@ -277,7 +277,7 @@ static void force_sig_info_umip_fault(void __user *addr, struct pt_regs *regs) | |||
277 | tsk->thread.error_code = X86_PF_USER | X86_PF_WRITE; | 277 | tsk->thread.error_code = X86_PF_USER | X86_PF_WRITE; |
278 | tsk->thread.trap_nr = X86_TRAP_PF; | 278 | tsk->thread.trap_nr = X86_TRAP_PF; |
279 | 279 | ||
280 | force_sig_fault(SIGSEGV, SEGV_MAPERR, addr, current); | 280 | force_sig_fault(SIGSEGV, SEGV_MAPERR, addr); |
281 | 281 | ||
282 | if (!(show_unhandled_signals && unhandled_signal(tsk, SIGSEGV))) | 282 | if (!(show_unhandled_signals && unhandled_signal(tsk, SIGSEGV))) |
283 | return; | 283 | return; |
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 16a5d1b615a7..46ac96aa7c81 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c | |||
@@ -756,8 +756,7 @@ no_context(struct pt_regs *regs, unsigned long error_code, | |||
756 | set_signal_archinfo(address, error_code); | 756 | set_signal_archinfo(address, error_code); |
757 | 757 | ||
758 | /* XXX: hwpoison faults will set the wrong code. */ | 758 | /* XXX: hwpoison faults will set the wrong code. */ |
759 | force_sig_fault(signal, si_code, (void __user *)address, | 759 | force_sig_fault(signal, si_code, (void __user *)address); |
760 | current); | ||
761 | } | 760 | } |
762 | 761 | ||
763 | /* | 762 | /* |
@@ -918,7 +917,7 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code, | |||
918 | if (si_code == SEGV_PKUERR) | 917 | if (si_code == SEGV_PKUERR) |
919 | force_sig_pkuerr((void __user *)address, pkey); | 918 | force_sig_pkuerr((void __user *)address, pkey); |
920 | 919 | ||
921 | force_sig_fault(SIGSEGV, si_code, (void __user *)address, current); | 920 | force_sig_fault(SIGSEGV, si_code, (void __user *)address); |
922 | 921 | ||
923 | return; | 922 | return; |
924 | } | 923 | } |
@@ -1044,7 +1043,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address, | |||
1044 | return; | 1043 | return; |
1045 | } | 1044 | } |
1046 | #endif | 1045 | #endif |
1047 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current); | 1046 | force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); |
1048 | } | 1047 | } |
1049 | 1048 | ||
1050 | static noinline void | 1049 | static noinline void |
diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c index 6f26b254091b..f060348c1b23 100644 --- a/arch/xtensa/kernel/traps.c +++ b/arch/xtensa/kernel/traps.c | |||
@@ -330,7 +330,7 @@ do_unaligned_user (struct pt_regs *regs) | |||
330 | "(pid = %d, pc = %#010lx)\n", | 330 | "(pid = %d, pc = %#010lx)\n", |
331 | regs->excvaddr, current->comm, | 331 | regs->excvaddr, current->comm, |
332 | task_pid_nr(current), regs->pc); | 332 | task_pid_nr(current), regs->pc); |
333 | force_sig_fault(SIGBUS, BUS_ADRALN, (void *) regs->excvaddr, current); | 333 | force_sig_fault(SIGBUS, BUS_ADRALN, (void *) regs->excvaddr); |
334 | } | 334 | } |
335 | #endif | 335 | #endif |
336 | 336 | ||
diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c index 2ab0e0dcd166..f81b1478da61 100644 --- a/arch/xtensa/mm/fault.c +++ b/arch/xtensa/mm/fault.c | |||
@@ -157,7 +157,7 @@ bad_area: | |||
157 | if (user_mode(regs)) { | 157 | if (user_mode(regs)) { |
158 | current->thread.bad_vaddr = address; | 158 | current->thread.bad_vaddr = address; |
159 | current->thread.error_code = is_write; | 159 | current->thread.error_code = is_write; |
160 | force_sig_fault(SIGSEGV, code, (void *) address, current); | 160 | force_sig_fault(SIGSEGV, code, (void *) address); |
161 | return; | 161 | return; |
162 | } | 162 | } |
163 | bad_page_fault(regs, address, SIGSEGV); | 163 | bad_page_fault(regs, address, SIGSEGV); |
@@ -182,7 +182,7 @@ do_sigbus: | |||
182 | * or user mode. | 182 | * or user mode. |
183 | */ | 183 | */ |
184 | current->thread.bad_vaddr = address; | 184 | current->thread.bad_vaddr = address; |
185 | force_sig_fault(SIGBUS, BUS_ADRERR, (void *) address, current); | 185 | force_sig_fault(SIGBUS, BUS_ADRERR, (void *) address); |
186 | 186 | ||
187 | /* Kernel mode? Handle exceptions or die */ | 187 | /* Kernel mode? Handle exceptions or die */ |
188 | if (!user_mode(regs)) | 188 | if (!user_mode(regs)) |
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index 507af66a1fc8..7f872506e1de 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h | |||
@@ -313,8 +313,7 @@ int force_sig_fault_to_task(int sig, int code, void __user *addr | |||
313 | , struct task_struct *t); | 313 | , struct task_struct *t); |
314 | int force_sig_fault(int sig, int code, void __user *addr | 314 | int force_sig_fault(int sig, int code, void __user *addr |
315 | ___ARCH_SI_TRAPNO(int trapno) | 315 | ___ARCH_SI_TRAPNO(int trapno) |
316 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr) | 316 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr)); |
317 | , struct task_struct *t); | ||
318 | int send_sig_fault(int sig, int code, void __user *addr | 317 | int send_sig_fault(int sig, int code, void __user *addr |
319 | ___ARCH_SI_TRAPNO(int trapno) | 318 | ___ARCH_SI_TRAPNO(int trapno) |
320 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr) | 319 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr) |
diff --git a/kernel/signal.c b/kernel/signal.c index e420489ac4c9..d92b636b4e9d 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -1645,12 +1645,11 @@ int force_sig_fault_to_task(int sig, int code, void __user *addr | |||
1645 | 1645 | ||
1646 | int force_sig_fault(int sig, int code, void __user *addr | 1646 | int force_sig_fault(int sig, int code, void __user *addr |
1647 | ___ARCH_SI_TRAPNO(int trapno) | 1647 | ___ARCH_SI_TRAPNO(int trapno) |
1648 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr) | 1648 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr)) |
1649 | , struct task_struct *t) | ||
1650 | { | 1649 | { |
1651 | return force_sig_fault_to_task(sig, code, addr | 1650 | return force_sig_fault_to_task(sig, code, addr |
1652 | ___ARCH_SI_TRAPNO(trapno) | 1651 | ___ARCH_SI_TRAPNO(trapno) |
1653 | ___ARCH_SI_IA64(imm, flags, isr), t); | 1652 | ___ARCH_SI_IA64(imm, flags, isr), current); |
1654 | } | 1653 | } |
1655 | 1654 | ||
1656 | int send_sig_fault(int sig, int code, void __user *addr | 1655 | int send_sig_fault(int sig, int code, void __user *addr |