aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2019-05-23 12:04:24 -0400
committerEric W. Biederman <ebiederm@xmission.com>2019-05-29 10:31:43 -0400
commit2e1661d2673667d886cd40ad9f414cb6db48d8da (patch)
tree5a2c32eb8a5c575bfb5c7013f5d9d427f5c06c34
parent91ca180dbdd687d45fe4aab055b02d29c91b90df (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>
-rw-r--r--arch/alpha/kernel/traps.c2
-rw-r--r--arch/alpha/mm/fault.c4
-rw-r--r--arch/arc/kernel/traps.c2
-rw-r--r--arch/arc/mm/fault.c4
-rw-r--r--arch/arm/kernel/ptrace.c2
-rw-r--r--arch/arm/kernel/traps.c2
-rw-r--r--arch/arm/mm/alignment.c2
-rw-r--r--arch/arm/mm/fault.c2
-rw-r--r--arch/arm64/kernel/traps.c2
-rw-r--r--arch/c6x/kernel/traps.c2
-rw-r--r--arch/csky/abiv1/alignment.c2
-rw-r--r--arch/csky/abiv2/fpu.c2
-rw-r--r--arch/csky/kernel/traps.c2
-rw-r--r--arch/csky/mm/fault.c4
-rw-r--r--arch/hexagon/kernel/traps.c2
-rw-r--r--arch/hexagon/mm/vm_fault.c4
-rw-r--r--arch/ia64/kernel/brl_emu.c6
-rw-r--r--arch/ia64/kernel/traps.c18
-rw-r--r--arch/ia64/kernel/unaligned.c2
-rw-r--r--arch/ia64/mm/fault.c2
-rw-r--r--arch/m68k/kernel/traps.c4
-rw-r--r--arch/m68k/mm/fault.c4
-rw-r--r--arch/microblaze/kernel/exceptions.c2
-rw-r--r--arch/microblaze/mm/fault.c2
-rw-r--r--arch/mips/kernel/traps.c12
-rw-r--r--arch/mips/mm/fault.c4
-rw-r--r--arch/nds32/kernel/fpu.c2
-rw-r--r--arch/nds32/kernel/traps.c4
-rw-r--r--arch/nds32/mm/fault.c4
-rw-r--r--arch/nios2/kernel/traps.c2
-rw-r--r--arch/openrisc/kernel/traps.c8
-rw-r--r--arch/openrisc/mm/fault.c4
-rw-r--r--arch/parisc/kernel/traps.c14
-rw-r--r--arch/parisc/kernel/unaligned.c4
-rw-r--r--arch/parisc/math-emu/driver.c2
-rw-r--r--arch/parisc/mm/fault.c2
-rw-r--r--arch/powerpc/kernel/process.c2
-rw-r--r--arch/powerpc/kernel/traps.c4
-rw-r--r--arch/powerpc/mm/fault.c2
-rw-r--r--arch/powerpc/platforms/cell/spufs/fault.c9
-rw-r--r--arch/riscv/kernel/traps.c4
-rw-r--r--arch/s390/kernel/traps.c6
-rw-r--r--arch/s390/mm/fault.c6
-rw-r--r--arch/sh/kernel/hw_breakpoint.c2
-rw-r--r--arch/sh/kernel/traps_32.c4
-rw-r--r--arch/sh/math-emu/math.c2
-rw-r--r--arch/sh/mm/fault.c2
-rw-r--r--arch/sparc/kernel/process_64.c2
-rw-r--r--arch/sparc/kernel/sys_sparc_32.c2
-rw-r--r--arch/sparc/kernel/sys_sparc_64.c2
-rw-r--r--arch/sparc/kernel/traps_32.c4
-rw-r--r--arch/sparc/kernel/traps_64.c39
-rw-r--r--arch/sparc/mm/fault_32.c2
-rw-r--r--arch/sparc/mm/fault_64.c2
-rw-r--r--arch/um/kernel/ptrace.c3
-rw-r--r--arch/um/kernel/trap.c12
-rw-r--r--arch/unicore32/kernel/traps.c2
-rw-r--r--arch/unicore32/mm/fault.c2
-rw-r--r--arch/x86/entry/vsyscall/vsyscall_64.c2
-rw-r--r--arch/x86/kernel/ptrace.c2
-rw-r--r--arch/x86/kernel/traps.c4
-rw-r--r--arch/x86/kernel/umip.c2
-rw-r--r--arch/x86/mm/fault.c7
-rw-r--r--arch/xtensa/kernel/traps.c2
-rw-r--r--arch/xtensa/mm/fault.c4
-rw-r--r--include/linux/sched/signal.h3
-rw-r--r--kernel/signal.c5
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)
204void ptrace_break(struct pt_regs *regs) 204void 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
210static int break_trap(struct pt_regs *regs, unsigned int instr) 210static 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
190void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs) 190void 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
265void arm64_force_sig_mceerr(int code, void __user *addr, short lsb, 265void 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
289static struct ctl_table alignment_tbl[4] = { 289static 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:
179bad_area_nosemaphore: 179bad_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
154bad_area: 154bad_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(&regs)->ri), 410 (void __user *) (regs.cr_iip + ia64_psr(&regs)->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(&regs)->ri); 483 + ia64_psr(&regs)->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(&regs)) 488 } else if (ia64_done_with_exception(&regs))
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(&regs)) { 494 if (user_mode(&regs)) {
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, &regs, isr); 550 result = handle_fpu_swa((vector == 32) ? 1 : 0, &regs, 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(&regs)) { 578 if (user_mode(&regs)) {
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
1133void die_if_kernel (char *str, struct pt_regs *fp, int nr) 1133void 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
1160asmlinkage void fpemu_signal(int signal, int code, void *addr) 1160asmlinkage 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
69asmlinkage void full_exception(struct pt_regs *regs, unsigned int type, 69asmlinkage 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:
289do_sigbus: 289do_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(&current->mm->mmap_sem); 763 up_read(&current->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));
250done: 250done:
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
269void do_debug_trap(unsigned long entry, unsigned long addr, 269void 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
27static void _send_sig(int signo, int code, unsigned long addr) 27static 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
32void die(const char *str, struct pt_regs *regs, long err) 32void 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
250asmlinkage void do_trap(struct pt_regs *regs, unsigned long address) 250asmlinkage 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)
275static void handle_gdb_break(struct pt_regs *regs, int wot) 275static 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
281static void handle_break(struct pt_regs *regs) 281static 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 {
697force_sigbus: 697force_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
302void user_single_step_report(struct pt_regs *regs) 302void 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
307static void show_signal_msg(int signr, struct pt_regs *regs, int code, 307static 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
82static void do_trap_error(struct pt_regs *regs, int signo, int code, 82static 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)
45void do_report_trap(struct pt_regs *regs, int si_signo, int si_code, char *str) 45void 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}
84NOKPROBE_SYMBOL(do_per_trap); 84NOKPROBE_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
250const struct exception_table_entry *s390_search_extables(unsigned long addr) 249const 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
312static noinline int signal_return(struct pt_regs *regs) 310static 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)
41static void 41static void
42force_sig_info_fault(int si_signo, int si_code, unsigned long address) 42force_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
520static void stack_unaligned(unsigned long sp) 520static 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
525static const char uwfault32[] = KERN_INFO \ 525static 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
109void do_illegal_instruction(struct pt_regs *regs, unsigned long pc, unsigned long npc, 109void 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
333void handle_cp_disabled(struct pt_regs *regs, unsigned long pc, unsigned long npc, 333void 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
113void bad_trap_tl1(struct pt_regs *regs, long lvl) 113void 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);
205out: 205out:
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
242void sun4v_insn_access_exception_tl1(struct pt_regs *regs, unsigned long addr, unsigned long type_ctx) 242void 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);
325out: 325out:
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
577void spitfire_access_error(struct pt_regs *regs, unsigned long status_encoded, unsigned long afar) 574void 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);
2403out: 2400out:
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);
2423out: 2420out:
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);
2619out: 2616out:
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);
2639out: 2636out:
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
2706void do_privop(struct pt_regs *regs) 2703void 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);
2720out: 2717out:
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
137static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault) 137static 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
193static unsigned int get_fault_insn(struct pt_regs *regs, unsigned int insn) 193static 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)
163static void bad_segv(struct faultinfo fi, unsigned long ip) 163static 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
170void fatal_sigsegv(void) 169void 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
280out: 277out:
@@ -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
130void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs) 130void 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
1375void user_single_step_report(struct pt_regs *regs) 1375void 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}
261NOKPROBE_SYMBOL(do_trap); 261NOKPROBE_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
862dotraplinkage void do_coprocessor_error(struct pt_regs *regs, long error_code) 862dotraplinkage 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
1050static noinline void 1049static 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);
314int force_sig_fault(int sig, int code, void __user *addr 314int 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);
318int send_sig_fault(int sig, int code, void __user *addr 317int 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
1646int force_sig_fault(int sig, int code, void __user *addr 1646int 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
1656int send_sig_fault(int sig, int code, void __user *addr 1655int send_sig_fault(int sig, int code, void __user *addr