signal: Remove the task parameter from force_sig_fault
authorEric W. Biederman <ebiederm@xmission.com>
Thu, 23 May 2019 16:04:24 +0000 (11:04 -0500)
committerEric W. Biederman <ebiederm@xmission.com>
Wed, 29 May 2019 14:31:43 +0000 (09:31 -0500)
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:
arch/alpha/kernel/traps.c
arch/alpha/mm/fault.c
arch/arc/kernel/traps.c
arch/arc/mm/fault.c
arch/arm/kernel/ptrace.c
arch/arm/kernel/traps.c
arch/arm/mm/alignment.c
arch/arm/mm/fault.c
arch/arm64/kernel/traps.c
arch/c6x/kernel/traps.c
arch/csky/abiv1/alignment.c
arch/csky/abiv2/fpu.c
arch/csky/kernel/traps.c
arch/csky/mm/fault.c
arch/hexagon/kernel/traps.c
arch/hexagon/mm/vm_fault.c
arch/ia64/kernel/brl_emu.c
arch/ia64/kernel/traps.c
arch/ia64/kernel/unaligned.c
arch/ia64/mm/fault.c
arch/m68k/kernel/traps.c
arch/m68k/mm/fault.c
arch/microblaze/kernel/exceptions.c
arch/microblaze/mm/fault.c
arch/mips/kernel/traps.c
arch/mips/mm/fault.c
arch/nds32/kernel/fpu.c
arch/nds32/kernel/traps.c
arch/nds32/mm/fault.c
arch/nios2/kernel/traps.c
arch/openrisc/kernel/traps.c
arch/openrisc/mm/fault.c
arch/parisc/kernel/traps.c
arch/parisc/kernel/unaligned.c
arch/parisc/math-emu/driver.c
arch/parisc/mm/fault.c
arch/powerpc/kernel/process.c
arch/powerpc/kernel/traps.c
arch/powerpc/mm/fault.c
arch/powerpc/platforms/cell/spufs/fault.c
arch/riscv/kernel/traps.c
arch/s390/kernel/traps.c
arch/s390/mm/fault.c
arch/sh/kernel/hw_breakpoint.c
arch/sh/kernel/traps_32.c
arch/sh/math-emu/math.c
arch/sh/mm/fault.c
arch/sparc/kernel/process_64.c
arch/sparc/kernel/sys_sparc_32.c
arch/sparc/kernel/sys_sparc_64.c
arch/sparc/kernel/traps_32.c
arch/sparc/kernel/traps_64.c
arch/sparc/mm/fault_32.c
arch/sparc/mm/fault_64.c
arch/um/kernel/ptrace.c
arch/um/kernel/trap.c
arch/unicore32/kernel/traps.c
arch/unicore32/mm/fault.c
arch/x86/entry/vsyscall/vsyscall_64.c
arch/x86/kernel/ptrace.c
arch/x86/kernel/traps.c
arch/x86/kernel/umip.c
arch/x86/mm/fault.c
arch/xtensa/kernel/traps.c
arch/xtensa/mm/fault.c
include/linux/sched/signal.h
kernel/signal.c

index bc96276..f6b9664 100644 (file)
@@ -402,7 +402,7 @@ do_entDbg(struct pt_regs *regs)
 {
        die_if_kernel("Instruction fault", regs, 0, NULL);
 
-       force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)regs->pc, 0, current);
+       force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)regs->pc, 0);
 }
 
 
index 188fc92..741e61e 100644 (file)
@@ -221,13 +221,13 @@ retry:
        up_read(&mm->mmap_sem);
        /* Send a sigbus, regardless of whether we were in kernel
           or user mode.  */
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *) address, 0, current);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *) address, 0);
        if (!user_mode(regs))
                goto no_context;
        return;
 
  do_sigsegv:
-       force_sig_fault(SIGSEGV, si_code, (void __user *) address, 0, current);
+       force_sig_fault(SIGSEGV, si_code, (void __user *) address, 0);
        return;
 
 #ifdef CONFIG_ALPHA_LARGE_VMALLOC
index e618fbb..fc56efc 100644 (file)
@@ -50,7 +50,7 @@ unhandled_exception(const char *str, struct pt_regs *regs,
 
                tsk->thread.fault_address = (__force unsigned int)addr;
 
-               force_sig_fault(signo, si_code, addr, current);
+               force_sig_fault(signo, si_code, addr);
 
        } else {
                /* If not due to copy_(to|from)_user, we are doomed */
index d5d4758..5001f64 100644 (file)
@@ -202,7 +202,7 @@ bad_area_nosemaphore:
        /* User mode accesses just cause a SIGSEGV */
        if (user_mode(regs)) {
                tsk->thread.fault_address = address;
-               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address);
                return;
        }
 
@@ -237,5 +237,5 @@ do_sigbus:
                goto no_context;
 
        tsk->thread.fault_address = address;
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
 }
index f9cbd08..1512d6b 100644 (file)
@@ -204,7 +204,7 @@ void ptrace_disable(struct task_struct *child)
 void ptrace_break(struct pt_regs *regs)
 {
        force_sig_fault(SIGTRAP, TRAP_BRKPT,
-                       (void __user *)instruction_pointer(regs), current);
+                       (void __user *)instruction_pointer(regs));
 }
 
 static int break_trap(struct pt_regs *regs, unsigned int instr)
index 288989c..a32342f 100644 (file)
@@ -372,7 +372,7 @@ void arm_notify_die(const char *str, struct pt_regs *regs,
                current->thread.error_code = err;
                current->thread.trap_no = trap;
 
-               force_sig_fault(signo, si_code, addr, current);
+               force_sig_fault(signo, si_code, addr);
        } else {
                die(str, regs, err);
        }
index e376883..a6fffd7 100644 (file)
@@ -948,7 +948,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
                goto fixup;
 
        if (ai_usermode & UM_SIGNAL) {
-               force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr, current);
+               force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr);
        } else {
                /*
                 * We're about to disable the alignment trap and return to
index 03007ea..49e8ec2 100644 (file)
@@ -184,7 +184,7 @@ __do_user_fault(unsigned long addr, unsigned int fsr, unsigned int sig,
        tsk->thread.address = addr;
        tsk->thread.error_code = fsr;
        tsk->thread.trap_no = 14;
-       force_sig_fault(sig, code, (void __user *)addr, current);
+       force_sig_fault(sig, code, (void __user *)addr);
 }
 
 void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
index c76a64c..a490a4a 100644 (file)
@@ -259,7 +259,7 @@ void arm64_force_sig_fault(int signo, int code, void __user *addr,
        if (signo == SIGKILL)
                force_sig(SIGKILL);
        else
-               force_sig_fault(signo, code, addr, current);
+               force_sig_fault(signo, code, addr);
 }
 
 void arm64_force_sig_mceerr(int code, void __user *addr, short lsb,
index 5c60aea..ca54d1d 100644 (file)
@@ -253,7 +253,7 @@ static void do_trap(struct exception_info *except_info, struct pt_regs *regs)
        die_if_kernel(except_info->kernel_str, regs, addr);
 
        force_sig_fault(except_info->signo, except_info->code,
-                       (void __user *)addr, current);
+                       (void __user *)addr);
 }
 
 /*
index d789be3..27ef5b2 100644 (file)
@@ -283,7 +283,7 @@ bad_area:
                do_exit(SIGKILL);
        }
 
-       force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr, current);
+       force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr);
 }
 
 static struct ctl_table alignment_tbl[4] = {
index e7e1134..86d187d 100644 (file)
@@ -124,7 +124,7 @@ void fpu_fpe(struct pt_regs *regs)
                        code = FPE_FLTRES;
        }
 
-       force_sig_fault(sig, code, (void __user *)regs->pc, current);
+       force_sig_fault(sig, code, (void __user *)regs->pc);
 }
 
 #define FMFVR_FPU_REGS(vrx, vry)       \
index f487a9b..2792e96 100644 (file)
@@ -106,7 +106,7 @@ void buserr(struct pt_regs *regs)
        pr_err("User mode Bus Error\n");
        show_regs(regs);
 
-       force_sig_fault(SIGSEGV, 0, (void __user *)regs->pc, current);
+       force_sig_fault(SIGSEGV, 0, (void __user *)regs->pc);
 }
 
 #define USR_BKPT 0x1464
index 18041f4..f76618b 100644 (file)
@@ -179,7 +179,7 @@ bad_area:
 bad_area_nosemaphore:
        /* User mode accesses just cause a SIGSEGV */
        if (user_mode(regs)) {
-               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address);
                return;
        }
 
@@ -212,5 +212,5 @@ do_sigbus:
        if (!user_mode(regs))
                goto no_context;
 
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
 }
index e634414..b8a69b2 100644 (file)
@@ -420,7 +420,7 @@ void do_trap0(struct pt_regs *regs)
                         * may want to use a different trap0 flavor.
                         */
                        force_sig_fault(SIGTRAP, TRAP_BRKPT,
-                                       (void __user *) pt_elr(regs), current);
+                                       (void __user *) pt_elr(regs));
                } else {
 #ifdef CONFIG_KGDB
                        kgdb_handle_exception(pt_cause(regs), SIGTRAP,
index eb263e6..2b3e225 100644 (file)
@@ -148,14 +148,14 @@ good_area:
                si_signo = SIGSEGV;
                si_code  = SEGV_ACCERR;
        }
-       force_sig_fault(si_signo, si_code, (void __user *)address, current);
+       force_sig_fault(si_signo, si_code, (void __user *)address);
        return;
 
 bad_area:
        up_read(&mm->mmap_sem);
 
        if (user_mode(regs)) {
-               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address);
                return;
        }
        /* Kernel-mode fault falls through */
index c0239bf..782c481 100644 (file)
@@ -197,21 +197,21 @@ ia64_emulate_brl (struct pt_regs *regs, unsigned long ar_ec)
                 */
                printk(KERN_DEBUG "Woah! Unimplemented Instruction Address Trap!\n");
                force_sig_fault(SIGILL, ILL_BADIADDR, (void __user *)NULL,
-                               0, 0, 0, current);
+                               0, 0, 0);
        } else if (ia64_psr(regs)->tb) {
                /*
                 *  Branch Tracing is enabled.
                 *  Force a taken branch signal.
                 */
                force_sig_fault(SIGTRAP, TRAP_BRANCH, (void __user *)NULL,
-                               0, 0, 0, current);
+                               0, 0, 0);
        } else if (ia64_psr(regs)->ss) {
                /*
                 *  Single Step is enabled.
                 *  Force a trace signal.
                 */
                force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)NULL,
-                               0, 0, 0, current);
+                               0, 0, 0);
        }
        return rv;
 }
index 0a3adbf..e13cb90 100644 (file)
@@ -176,7 +176,7 @@ __kprobes ia64_bad_break (unsigned long break_num, struct pt_regs *regs)
        }
        force_sig_fault(sig, code,
                        (void __user *) (regs->cr_iip + ia64_psr(regs)->ri),
-                       break_num, 0 /* clear __ISR_VALID */, 0, current);
+                       break_num, 0 /* clear __ISR_VALID */, 0);
 }
 
 /*
@@ -353,7 +353,7 @@ handle_fpu_swa (int fp_fault, struct pt_regs *regs, unsigned long isr)
                        }
                        force_sig_fault(SIGFPE, si_code,
                                        (void __user *) (regs->cr_iip + ia64_psr(regs)->ri),
-                                       0, __ISR_VALID, isr, current);
+                                       0, __ISR_VALID, isr);
                }
        } else {
                if (exception == -1) {
@@ -373,7 +373,7 @@ handle_fpu_swa (int fp_fault, struct pt_regs *regs, unsigned long isr)
                        }
                        force_sig_fault(SIGFPE, si_code,
                                        (void __user *) (regs->cr_iip + ia64_psr(regs)->ri),
-                                       0, __ISR_VALID, isr, current);
+                                       0, __ISR_VALID, isr);
                }
        }
        return 0;
@@ -408,7 +408,7 @@ ia64_illegal_op_fault (unsigned long ec, long arg1, long arg2, long arg3,
 
        force_sig_fault(SIGILL, ILL_ILLOPC,
                        (void __user *) (regs.cr_iip + ia64_psr(&regs)->ri),
-                       0, 0, 0, current);
+                       0, 0, 0);
        return rv;
 }
 
@@ -483,7 +483,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa,
                                                        + ia64_psr(&regs)->ri);
                        }
                        force_sig_fault(sig, code, addr,
-                                       vector, __ISR_VALID, isr, current);
+                                       vector, __ISR_VALID, isr);
                        return;
                } else if (ia64_done_with_exception(&regs))
                        return;
@@ -493,7 +493,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa,
              case 31: /* Unsupported Data Reference */
                if (user_mode(&regs)) {
                        force_sig_fault(SIGILL, ILL_ILLOPN, (void __user *) iip,
-                                       vector, __ISR_VALID, isr, current);
+                                       vector, __ISR_VALID, isr);
                        return;
                }
                sprintf(buf, "Unsupported data reference");
@@ -542,7 +542,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa,
                                == NOTIFY_STOP)
                        return;
                force_sig_fault(SIGTRAP, si_code, (void __user *) ifa,
-                               0, __ISR_VALID, isr, current);
+                               0, __ISR_VALID, isr);
                return;
 
              case 32: /* fp fault */
@@ -550,7 +550,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa,
                result = handle_fpu_swa((vector == 32) ? 1 : 0, &regs, isr);
                if ((result < 0) || (current->thread.flags & IA64_THREAD_FPEMU_SIGFPE)) {
                        force_sig_fault(SIGFPE, FPE_FLTINV, (void __user *) iip,
-                                       0, __ISR_VALID, isr, current);
+                                       0, __ISR_VALID, isr);
                }
                return;
 
@@ -578,7 +578,7 @@ ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa,
                        if (user_mode(&regs)) {
                                force_sig_fault(SIGILL, ILL_BADIADDR,
                                                (void __user *) iip,
-                                               0, 0, 0, current);
+                                               0, 0, 0);
                                return;
                        }
                        sprintf(buf, "Unimplemented Instruction Address fault");
index a167a38..eb7d5df 100644 (file)
@@ -1537,6 +1537,6 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)
        }
   force_sigbus:
        force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) ifa,
-                       0, 0, 0, current);
+                       0, 0, 0);
        goto done;
 }
index 5baeb02..3c3a283 100644 (file)
@@ -249,7 +249,7 @@ retry:
        }
        if (user_mode(regs)) {
                force_sig_fault(signal, code, (void __user *) address,
-                               0, __ISR_VALID, isr, current);
+                               0, __ISR_VALID, isr);
                return;
        }
 
index 2b6e143..344f93d 100644 (file)
@@ -1127,7 +1127,7 @@ asmlinkage void trap_c(struct frame *fp)
                addr = (void __user*) fp->un.fmtb.daddr;
                break;
        }
-       force_sig_fault(sig, si_code, addr, current);
+       force_sig_fault(sig, si_code, addr);
 }
 
 void die_if_kernel (char *str, struct pt_regs *fp, int nr)
@@ -1159,6 +1159,6 @@ asmlinkage void fpsp040_die(void)
 #ifdef CONFIG_M68KFPU_EMU
 asmlinkage void fpemu_signal(int signal, int code, void *addr)
 {
-       force_sig_fault(signal, code, addr, current);
+       force_sig_fault(signal, code, addr);
 }
 #endif
index 9b6163c..e9b1d75 100644 (file)
@@ -30,13 +30,13 @@ int send_fault_sig(struct pt_regs *regs)
        pr_debug("send_fault_sig: %p,%d,%d\n", addr, signo, si_code);
 
        if (user_mode(regs)) {
-               force_sig_fault(signo, si_code, addr, current);
+               force_sig_fault(signo, si_code, addr);
        } else {
                if (fixup_exception(regs))
                        return -1;
 
                //if (signo == SIGBUS)
-               //      force_sig_fault(si_signo, si_code, addr, current);
+               //      force_sig_fault(si_signo, si_code, addr);
 
                /*
                 * Oops. The kernel tried to access some bad page. We'll have to
index eafff21..cf99c41 100644 (file)
@@ -63,7 +63,7 @@ void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr)
        if (kernel_mode(regs))
                die("Exception in kernel mode", regs, signr);
 
-       force_sig_fault(signr, code, (void __user *)addr, current);
+       force_sig_fault(signr, code, (void __user *)addr);
 }
 
 asmlinkage void full_exception(struct pt_regs *regs, unsigned int type,
index 202ad6a..e6a810b 100644 (file)
@@ -289,7 +289,7 @@ out_of_memory:
 do_sigbus:
        up_read(&mm->mmap_sem);
        if (user_mode(regs)) {
-               force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
+               force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
                return;
        }
        bad_page_fault(regs, address, SIGBUS);
index 62df48b..be4a7b2 100644 (file)
@@ -705,7 +705,7 @@ asmlinkage void do_ov(struct pt_regs *regs)
        prev_state = exception_enter();
        die_if_kernel("Integer overflow", regs);
 
-       force_sig_fault(SIGFPE, FPE_INTOVF, (void __user *)regs->cp0_epc, current);
+       force_sig_fault(SIGFPE, FPE_INTOVF, (void __user *)regs->cp0_epc);
        exception_exit(prev_state);
 }
 
@@ -750,7 +750,7 @@ int process_fpemu_return(int sig, void __user *fault_addr, unsigned long fcr31)
                return 1;
 
        case SIGBUS:
-               force_sig_fault(SIGBUS, BUS_ADRERR, fault_addr, current);
+               force_sig_fault(SIGBUS, BUS_ADRERR, fault_addr);
                return 1;
 
        case SIGSEGV:
@@ -761,7 +761,7 @@ int process_fpemu_return(int sig, void __user *fault_addr, unsigned long fcr31)
                else
                        si_code = SEGV_MAPERR;
                up_read(&current->mm->mmap_sem);
-               force_sig_fault(SIGSEGV, si_code, fault_addr, current);
+               force_sig_fault(SIGSEGV, si_code, fault_addr);
                return 1;
 
        default:
@@ -943,7 +943,7 @@ void do_trap_or_bp(struct pt_regs *regs, unsigned int code, int si_code,
                die_if_kernel(b, regs);
                force_sig_fault(SIGFPE,
                                code == BRK_DIVZERO ? FPE_INTDIV : FPE_INTOVF,
-                               (void __user *) regs->cp0_epc, current);
+                               (void __user *) regs->cp0_epc);
                break;
        case BRK_BUG:
                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,
                scnprintf(b, sizeof(b), "%s instruction in kernel code", str);
                die_if_kernel(b, regs);
                if (si_code) {
-                       force_sig_fault(SIGTRAP, si_code, NULL, current);
+                       force_sig_fault(SIGTRAP, si_code, NULL);
                } else {
                        force_sig(SIGTRAP);
                }
@@ -1521,7 +1521,7 @@ asmlinkage void do_watch(struct pt_regs *regs)
        if (test_tsk_thread_flag(current, TIF_LOAD_WATCH)) {
                mips_read_watch_registers();
                local_irq_enable();
-               force_sig_fault(SIGTRAP, TRAP_HWBKPT, NULL, current);
+               force_sig_fault(SIGTRAP, TRAP_HWBKPT, NULL);
        } else {
                mips_clear_watch_registers();
                local_irq_enable();
index e63abd4..f589aa8 100644 (file)
@@ -223,7 +223,7 @@ bad_area_nosemaphore:
                        pr_cont("\n");
                }
                current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
-               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address);
                return;
        }
 
@@ -279,7 +279,7 @@ do_sigbus:
 #endif
        current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
        tsk->thread.cp0_badvaddr = address;
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
 
        return;
 #ifndef CONFIG_64BIT
index fddd40c..1f8694c 100644 (file)
@@ -246,7 +246,7 @@ inline void handle_fpu_exception(struct pt_regs *regs)
        }
 
        force_sig_fault(si_signo, si_code,
-                       (void __user *)instruction_pointer(regs), current);
+                       (void __user *)instruction_pointer(regs));
 done:
        own_fpu();
 }
index a16e97f..f4d386b 100644 (file)
@@ -205,7 +205,7 @@ int bad_syscall(int n, struct pt_regs *regs)
        }
 
        force_sig_fault(SIGILL, ILL_ILLTRP,
-                       (void __user *)instruction_pointer(regs) - 4, current);
+                       (void __user *)instruction_pointer(regs) - 4);
        die_if_kernel("Oops - bad syscall", regs, n);
        return regs->uregs[0];
 }
@@ -263,7 +263,7 @@ static void send_sigtrap(struct pt_regs *regs, int error_code, int si_code)
        tsk->thread.error_code = error_code;
 
        force_sig_fault(SIGTRAP, si_code,
-                       (void __user *)instruction_pointer(regs), current);
+                       (void __user *)instruction_pointer(regs));
 }
 
 void do_debug_trap(unsigned long entry, unsigned long addr,
index 3844111..064ae5d 100644 (file)
@@ -271,7 +271,7 @@ bad_area_nosemaphore:
                tsk->thread.address = addr;
                tsk->thread.error_code = error_code;
                tsk->thread.trap_no = entry;
-               force_sig_fault(SIGSEGV, si_code, (void __user *)addr, current);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)addr);
                return;
        }
 
@@ -340,7 +340,7 @@ do_sigbus:
        tsk->thread.address = addr;
        tsk->thread.error_code = error_code;
        tsk->thread.trap_no = entry;
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)addr, current);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)addr);
 
        return;
 
index 3bc3cd2..486db79 100644 (file)
@@ -26,7 +26,7 @@ static DEFINE_SPINLOCK(die_lock);
 
 static void _send_sig(int signo, int code, unsigned long addr)
 {
-       force_sig_fault(signo, code, (void __user *) addr, current);
+       force_sig_fault(signo, code, (void __user *) addr);
 }
 
 void die(const char *str, struct pt_regs *regs, long err)
index 0fad2e4..a4cc6e5 100644 (file)
@@ -249,7 +249,7 @@ void __init trap_init(void)
 
 asmlinkage void do_trap(struct pt_regs *regs, unsigned long address)
 {
-       force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)address, current);
+       force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)address);
 
        regs->pc += 4;
 }
@@ -258,7 +258,7 @@ asmlinkage void do_unaligned_access(struct pt_regs *regs, unsigned long address)
 {
        if (user_mode(regs)) {
                /* Send a SIGBUS */
-               force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)address, current);
+               force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)address);
        } else {
                printk("KERNEL: Unaligned Access 0x%.8lx\n", address);
                show_registers(regs);
@@ -271,7 +271,7 @@ asmlinkage void do_bus_fault(struct pt_regs *regs, unsigned long address)
 {
        if (user_mode(regs)) {
                /* Send a SIGBUS */
-               force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
+               force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
        } else {                /* Kernel mode */
                printk("KERNEL: Bus error (SIGBUS) 0x%.8lx\n", address);
                show_registers(regs);
@@ -466,7 +466,7 @@ asmlinkage void do_illegal_instruction(struct pt_regs *regs,
 
        if (user_mode(regs)) {
                /* Send a SIGILL */
-               force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)address, current);
+               force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)address);
        } else {                /* Kernel mode */
                printk("KERNEL: Illegal instruction (SIGILL) 0x%.8lx\n",
                       address);
index f8b3a5a..ae9468c 100644 (file)
@@ -213,7 +213,7 @@ bad_area_nosemaphore:
        /* User mode accesses just cause a SIGSEGV */
 
        if (user_mode(regs)) {
-               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address);
                return;
        }
 
@@ -278,7 +278,7 @@ do_sigbus:
         * Send a sigbus, regardless of whether we were in kernel
         * or user mode.
         */
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
 
        /* Kernel mode? Handle exceptions or die */
        if (!user_mode(regs))
index 096e319..58dcf44 100644 (file)
@@ -275,7 +275,7 @@ void die_if_kernel(char *str, struct pt_regs *regs, long err)
 static void handle_gdb_break(struct pt_regs *regs, int wot)
 {
        force_sig_fault(SIGTRAP, wot,
-                       (void __user *) (regs->iaoq[0] & ~3), current);
+                       (void __user *) (regs->iaoq[0] & ~3));
 }
 
 static void handle_break(struct pt_regs *regs)
@@ -609,13 +609,13 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
                si_code = ILL_PRVREG;
        give_sigill:
                force_sig_fault(SIGILL, si_code,
-                               (void __user *) regs->iaoq[0], current);
+                               (void __user *) regs->iaoq[0]);
                return;
 
        case 12:
                /* Overflow Trap, let the userland signal handler do the cleanup */
                force_sig_fault(SIGFPE, FPE_INTOVF,
-                               (void __user *) regs->iaoq[0], current);
+                               (void __user *) regs->iaoq[0]);
                return;
                
        case 13:
@@ -627,7 +627,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
                         * to by si_addr.
                         */
                        force_sig_fault(SIGFPE, FPE_CONDTRAP,
-                                       (void __user *) regs->iaoq[0], current);
+                                       (void __user *) regs->iaoq[0]);
                        return;
                } 
                /* The kernel doesn't want to handle condition codes */
@@ -739,7 +739,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
                force_sig_fault(SIGSEGV, SEGV_MAPERR,
                                (code == 7)?
                                ((void __user *) regs->iaoq[0]) :
-                               ((void __user *) regs->ior), current);
+                               ((void __user *) regs->ior));
                return;
 
        case 28: 
@@ -754,7 +754,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
                                task_pid_nr(current), current->comm);
                        /* SIGBUS, for lack of a better one. */
                        force_sig_fault(SIGBUS, BUS_OBJERR,
-                                       (void __user *)regs->ior, current);
+                                       (void __user *)regs->ior);
                        return;
                }
                pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC);
@@ -770,7 +770,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
                                code, fault_space,
                                task_pid_nr(current), current->comm);
                force_sig_fault(SIGSEGV, SEGV_MAPERR,
-                               (void __user *)regs->ior, current);
+                               (void __user *)regs->ior);
                return;
            }
        }
index 932bfc0..3ccc3a6 100644 (file)
@@ -690,14 +690,14 @@ void handle_unaligned(struct pt_regs *regs)
                if (ret == ERR_PAGEFAULT)
                {
                        force_sig_fault(SIGSEGV, SEGV_MAPERR,
-                                       (void __user *)regs->ior, current);
+                                       (void __user *)regs->ior);
                }
                else
                {
 force_sigbus:
                        /* couldn't handle it ... */
                        force_sig_fault(SIGBUS, BUS_ADRALN,
-                                       (void __user *)regs->ior, current);
+                                       (void __user *)regs->ior);
                }
                
                return;
index 0590e05..f3e0bdd 100644 (file)
@@ -117,7 +117,7 @@ handle_fpe(struct pt_regs *regs)
        memcpy(regs->fr, frcopy, sizeof regs->fr);
        if (signalcode != 0) {
            force_sig_fault(signalcode >> 24, signalcode & 0xffffff,
-                           (void __user *) regs->iaoq[0], current);
+                           (void __user *) regs->iaoq[0]);
            return -1;
        }
 
index 56ceacb..6dd4669 100644 (file)
@@ -409,7 +409,7 @@ bad_area:
 #endif
                show_signal_msg(regs, code, address, tsk, vma);
 
-               force_sig_fault(signo, si_code, (void __user *) address, current);
+               force_sig_fault(signo, si_code, (void __user *) address);
                return;
        }
 
index 87da401..1b5b147 100644 (file)
@@ -643,7 +643,7 @@ void do_break (struct pt_regs *regs, unsigned long address,
        hw_breakpoint_disable();
 
        /* Deliver the signal to userspace */
-       force_sig_fault(SIGTRAP, TRAP_HWBKPT, (void __user *)address, current);
+       force_sig_fault(SIGTRAP, TRAP_HWBKPT, (void __user *)address);
 }
 #endif /* CONFIG_PPC_ADV_DEBUG_REGS */
 
index 83e59fd..dfc61f2 100644 (file)
@@ -301,7 +301,7 @@ NOKPROBE_SYMBOL(die);
 
 void user_single_step_report(struct pt_regs *regs)
 {
-       force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)regs->nip, current);
+       force_sig_fault(SIGTRAP, TRAP_TRACE, (void __user *)regs->nip);
 }
 
 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)
        if (!exception_common(signr, regs, code, addr))
                return;
 
-       force_sig_fault(signr, code, (void __user *)addr, current);
+       force_sig_fault(signr, code, (void __user *)addr);
 }
 
 /*
index 6ed6c34..02c70fa 100644 (file)
@@ -187,7 +187,7 @@ static int do_sigbus(struct pt_regs *regs, unsigned long address,
        }
 
 #endif
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
        return 0;
 }
 
index 971ac43..6634c0c 100644 (file)
@@ -44,22 +44,21 @@ static void spufs_handle_event(struct spu_context *ctx,
 
        switch (type) {
        case SPE_EVENT_INVALID_DMA:
-               force_sig_fault(SIGBUS, BUS_OBJERR, NULL, current);
+               force_sig_fault(SIGBUS, BUS_OBJERR, NULL);
                break;
        case SPE_EVENT_SPE_DATA_STORAGE:
                ctx->ops->restart_dma(ctx);
-               force_sig_fault(SIGSEGV, SEGV_ACCERR, (void __user *)ea,
-                               current);
+               force_sig_fault(SIGSEGV, SEGV_ACCERR, (void __user *)ea);
                break;
        case SPE_EVENT_DMA_ALIGNMENT:
                /* DAR isn't set for an alignment fault :( */
-               force_sig_fault(SIGBUS, BUS_ADRALN, NULL, current);
+               force_sig_fault(SIGBUS, BUS_ADRALN, NULL);
                break;
        case SPE_EVENT_SPE_ERROR:
                force_sig_fault(
                        SIGILL, ILL_ILLOPC,
                        (void __user *)(unsigned long)
-                       ctx->ops->npc_read(ctx) - 4, current);
+                       ctx->ops->npc_read(ctx) - 4);
                break;
        }
 }
index 6d67892..859ab55 100644 (file)
@@ -76,7 +76,7 @@ void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
                show_regs(regs);
        }
 
-       force_sig_fault(signo, code, (void __user *)addr, current);
+       force_sig_fault(signo, code, (void __user *)addr);
 }
 
 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)
        }
 #endif /* CONFIG_GENERIC_BUG */
 
-       force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)(regs->sepc), current);
+       force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)(regs->sepc));
 }
 
 #ifdef CONFIG_GENERIC_BUG
index 82e81a9..ac44dbf 100644 (file)
@@ -45,7 +45,7 @@ int is_valid_bugaddr(unsigned long addr)
 void do_report_trap(struct pt_regs *regs, int si_signo, int si_code, char *str)
 {
        if (user_mode(regs)) {
-               force_sig_fault(si_signo, si_code, get_trap_ip(regs), current);
+               force_sig_fault(si_signo, si_code, get_trap_ip(regs));
                report_user_fault(regs, si_signo, 0);
         } else {
                 const struct exception_table_entry *fixup;
@@ -79,7 +79,7 @@ void do_per_trap(struct pt_regs *regs)
        if (!current->ptrace)
                return;
        force_sig_fault(SIGTRAP, TRAP_HWBKPT,
-               (void __force __user *) current->thread.per_event.address, current);
+               (void __force __user *) current->thread.per_event.address);
 }
 NOKPROBE_SYMBOL(do_per_trap);
 
@@ -165,7 +165,7 @@ void illegal_op(struct pt_regs *regs)
                        return;
                if (*((__u16 *) opcode) == S390_BREAKPOINT_U16) {
                        if (current->ptrace)
-                               force_sig_fault(SIGTRAP, TRAP_BRKPT, location, current);
+                               force_sig_fault(SIGTRAP, TRAP_BRKPT, location);
                        else
                                signal = SIGILL;
 #ifdef CONFIG_UPROBES
index c220399..79afed5 100644 (file)
@@ -243,8 +243,7 @@ static noinline void do_sigsegv(struct pt_regs *regs, int si_code)
 {
        report_user_fault(regs, SIGSEGV, 1);
        force_sig_fault(SIGSEGV, si_code,
-                       (void __user *)(regs->int_parm_long & __FAIL_ADDR_MASK),
-                       current);
+                       (void __user *)(regs->int_parm_long & __FAIL_ADDR_MASK));
 }
 
 const struct exception_table_entry *s390_search_extables(unsigned long addr)
@@ -305,8 +304,7 @@ static noinline void do_sigbus(struct pt_regs *regs)
         * or user mode.
         */
        force_sig_fault(SIGBUS, BUS_ADRERR,
-                       (void __user *)(regs->int_parm_long & __FAIL_ADDR_MASK),
-                       current);
+                       (void __user *)(regs->int_parm_long & __FAIL_ADDR_MASK));
 }
 
 static noinline int signal_return(struct pt_regs *regs)
index bc96b16..3bd010b 100644 (file)
@@ -338,7 +338,7 @@ static int __kprobes hw_breakpoint_handler(struct die_args *args)
                /* Deliver the signal to userspace */
                if (!arch_check_bp_in_kernelspace(&bp->hw.info)) {
                        force_sig_fault(SIGTRAP, TRAP_HWBKPT,
-                                       (void __user *)NULL, current);
+                                       (void __user *)NULL);
                }
 
                rcu_read_unlock();
index bd5568c..058c618 100644 (file)
@@ -533,7 +533,7 @@ uspace_segv:
                       "access (PC %lx PR %lx)\n", current->comm, regs->pc,
                       regs->pr);
 
-               force_sig_fault(SIGBUS, si_code, (void __user *)address, current);
+               force_sig_fault(SIGBUS, si_code, (void __user *)address);
        } else {
                inc_unaligned_kernel_access();
 
@@ -603,7 +603,7 @@ asmlinkage void do_divide_error(unsigned long r4)
                /* Let gcc know unhandled cases don't make it past here */
                return;
        }
-       force_sig_fault(SIGFPE, code, NULL, current);
+       force_sig_fault(SIGFPE, code, NULL);
 }
 #endif
 
index fe261b0..e8be0ec 100644 (file)
@@ -560,7 +560,7 @@ static int ieee_fpe_handler(struct pt_regs *regs)
                        task_thread_info(tsk)->status |= TS_USEDFPU;
                } else {
                        force_sig_fault(SIGFPE, FPE_FLTINV,
-                                       (void __user *)regs->pc, current);
+                                       (void __user *)regs->pc);
                }
 
                regs->pc = nextpc;
index 851a3cb..3093bc3 100644 (file)
@@ -41,7 +41,7 @@ static inline int notify_page_fault(struct pt_regs *regs, int trap)
 static void
 force_sig_info_fault(int si_signo, int si_code, unsigned long address)
 {
-       force_sig_fault(si_signo, si_code, (void __user *)address, current);
+       force_sig_fault(si_signo, si_code, (void __user *)address);
 }
 
 /*
index c4bccd9..4282116 100644 (file)
@@ -519,7 +519,7 @@ void synchronize_user_stack(void)
 
 static void stack_unaligned(unsigned long sp)
 {
-       force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) sp, 0, current);
+       force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) sp, 0);
 }
 
 static const char uwfault32[] = KERN_INFO \
index 452e4d0..be77538 100644 (file)
@@ -151,7 +151,7 @@ sparc_breakpoint (struct pt_regs *regs)
 #ifdef DEBUG_SPARC_BREAKPOINT
         printk ("TRAP: Entering kernel PC=%x, nPC=%x\n", regs->pc, regs->npc);
 #endif
-       force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->pc, 0, current);
+       force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->pc, 0);
 
 #ifdef DEBUG_SPARC_BREAKPOINT
        printk ("TRAP: Returning to space: PC=%x nPC=%x\n", regs->pc, regs->npc);
index 9825ca6..ccc8892 100644 (file)
@@ -511,7 +511,7 @@ asmlinkage void sparc_breakpoint(struct pt_regs *regs)
 #ifdef DEBUG_SPARC_BREAKPOINT
         printk ("TRAP: Entering kernel PC=%lx, nPC=%lx\n", regs->tpc, regs->tnpc);
 #endif
-       force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->tpc, 0, current);
+       force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->tpc, 0);
 #ifdef DEBUG_SPARC_BREAKPOINT
        printk ("TRAP: Returning to space: PC=%lx nPC=%lx\n", regs->tpc, regs->tnpc);
 #endif
index bcdfc61..4ceecad 100644 (file)
@@ -103,7 +103,7 @@ void do_hw_interrupt(struct pt_regs *regs, unsigned long type)
                die_if_kernel("Kernel bad trap", regs);
 
        force_sig_fault(SIGILL, ILL_ILLTRP,
-                       (void __user *)regs->pc, type - 0x80, current);
+                       (void __user *)regs->pc, type - 0x80);
 }
 
 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
        printk("Register Access Exception at PC %08lx NPC %08lx PSR %08lx\n",
               pc, npc, psr);
 #endif
-       force_sig_fault(SIGBUS, BUS_OBJERR, (void __user *)pc, 0, current);
+       force_sig_fault(SIGBUS, BUS_OBJERR, (void __user *)pc, 0);
 }
 
 void handle_cp_disabled(struct pt_regs *regs, unsigned long pc, unsigned long npc,
index 12bfc7e..614d92c 100644 (file)
@@ -107,7 +107,7 @@ void bad_trap(struct pt_regs *regs, long lvl)
                regs->tnpc &= 0xffffffff;
        }
        force_sig_fault(SIGILL, ILL_ILLTRP,
-                       (void __user *)regs->tpc, lvl, current);
+                       (void __user *)regs->tpc, lvl);
 }
 
 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
                regs->tnpc &= 0xffffffff;
        }
        force_sig_fault(SIGSEGV, SEGV_MAPERR,
-                       (void __user *)regs->tpc, 0, current);
+                       (void __user *)regs->tpc, 0);
 out:
        exception_exit(prev_state);
 }
@@ -236,7 +236,7 @@ void sun4v_insn_access_exception(struct pt_regs *regs, unsigned long addr, unsig
                regs->tpc &= 0xffffffff;
                regs->tnpc &= 0xffffffff;
        }
-       force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *) addr, 0, current);
+       force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *) addr, 0);
 }
 
 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
        if (is_no_fault_exception(regs))
                return;
 
-       force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)sfar, 0, current);
+       force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)sfar, 0);
 out:
        exception_exit(prev_state);
 }
@@ -385,16 +385,13 @@ void sun4v_data_access_exception(struct pt_regs *regs, unsigned long addr, unsig
         */
        switch (type) {
        case HV_FAULT_TYPE_INV_ASI:
-               force_sig_fault(SIGILL, ILL_ILLADR, (void __user *)addr, 0,
-                               current);
+               force_sig_fault(SIGILL, ILL_ILLADR, (void __user *)addr, 0);
                break;
        case HV_FAULT_TYPE_MCD_DIS:
-               force_sig_fault(SIGSEGV, SEGV_ACCADI, (void __user *)addr, 0,
-                               current);
+               force_sig_fault(SIGSEGV, SEGV_ACCADI, (void __user *)addr, 0);
                break;
        default:
-               force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)addr, 0,
-                               current);
+               force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)addr, 0);
                break;
        }
 }
@@ -571,7 +568,7 @@ static void spitfire_ue_log(unsigned long afsr, unsigned long afar, unsigned lon
                regs->tpc &= 0xffffffff;
                regs->tnpc &= 0xffffffff;
        }
-       force_sig_fault(SIGBUS, BUS_OBJERR, (void *)0, 0, current);
+       force_sig_fault(SIGBUS, BUS_OBJERR, (void *)0, 0);
 }
 
 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)
         * code
         */
        force_sig_fault(SIGSEGV, SEGV_ADIDERR, (void __user *)ent.err_raddr,
-                       0, current);
+                       0);
 }
 
 /* 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,
        }
        if (attrs & SUN4V_ERR_ATTRS_PIO) {
                force_sig_fault(SIGBUS, BUS_ADRERR,
-                               (void __user *)sun4v_get_vaddr(regs), 0, current);
+                               (void __user *)sun4v_get_vaddr(regs), 0);
                return true;
        }
 
@@ -2344,7 +2341,7 @@ static void do_fpe_common(struct pt_regs *regs)
                                code = FPE_FLTRES;
                }
                force_sig_fault(SIGFPE, code,
-                               (void __user *)regs->tpc, 0, current);
+                               (void __user *)regs->tpc, 0);
        }
 }
 
@@ -2399,7 +2396,7 @@ void do_tof(struct pt_regs *regs)
                regs->tnpc &= 0xffffffff;
        }
        force_sig_fault(SIGEMT, EMT_TAGOVF,
-                       (void __user *)regs->tpc, 0, current);
+                       (void __user *)regs->tpc, 0);
 out:
        exception_exit(prev_state);
 }
@@ -2419,7 +2416,7 @@ void do_div0(struct pt_regs *regs)
                regs->tnpc &= 0xffffffff;
        }
        force_sig_fault(SIGFPE, FPE_INTDIV,
-                       (void __user *)regs->tpc, 0, current);
+                       (void __user *)regs->tpc, 0);
 out:
        exception_exit(prev_state);
 }
@@ -2615,7 +2612,7 @@ void do_illegal_instruction(struct pt_regs *regs)
                        }
                }
        }
-       force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)pc, 0, current);
+       force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)pc, 0);
 out:
        exception_exit(prev_state);
 }
@@ -2635,7 +2632,7 @@ void mem_address_unaligned(struct pt_regs *regs, unsigned long sfar, unsigned lo
        if (is_no_fault_exception(regs))
                return;
 
-       force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)sfar, 0, current);
+       force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)sfar, 0);
 out:
        exception_exit(prev_state);
 }
@@ -2653,7 +2650,7 @@ void sun4v_do_mna(struct pt_regs *regs, unsigned long addr, unsigned long type_c
        if (is_no_fault_exception(regs))
                return;
 
-       force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) addr, 0, current);
+       force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *) addr, 0);
 }
 
 /* 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,
                regs->tpc &= 0xffffffff;
                regs->tnpc &= 0xffffffff;
        }
-       force_sig_fault(SIGSEGV, SEGV_ADIPERR, (void __user *)addr, 0, current);
+       force_sig_fault(SIGSEGV, SEGV_ADIPERR, (void __user *)addr, 0);
 }
 
 void do_privop(struct pt_regs *regs)
@@ -2716,7 +2713,7 @@ void do_privop(struct pt_regs *regs)
                regs->tnpc &= 0xffffffff;
        }
        force_sig_fault(SIGILL, ILL_PRVOPC,
-                       (void __user *)regs->tpc, 0, current);
+                       (void __user *)regs->tpc, 0);
 out:
        exception_exit(prev_state);
 }
index 2731faf..8d69de1 100644 (file)
@@ -131,7 +131,7 @@ static void __do_fault_siginfo(int code, int sig, struct pt_regs *regs,
                show_signal_msg(regs, sig, code,
                                addr, current);
 
-       force_sig_fault(sig, code, (void __user *) addr, 0, current);
+       force_sig_fault(sig, code, (void __user *) addr, 0);
 }
 
 static unsigned long compute_si_addr(struct pt_regs *regs, int text_fault)
index 8f8a604..83fda4d 100644 (file)
@@ -187,7 +187,7 @@ static void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
        if (unlikely(show_unhandled_signals))
                show_signal_msg(regs, sig, code, addr, current);
 
-       force_sig_fault(sig, code, (void __user *) addr, 0, current);
+       force_sig_fault(sig, code, (void __user *) addr, 0);
 }
 
 static unsigned int get_fault_insn(struct pt_regs *regs, unsigned int insn)
index 1797dfe..da1e96b 100644 (file)
@@ -117,8 +117,7 @@ static void send_sigtrap(struct uml_pt_regs *regs, int error_code)
        /* Send us the fake SIGTRAP */
        force_sig_fault(SIGTRAP, TRAP_BRKPT,
                        /* User-mode eip? */
-                       UPT_IS_USER(regs) ? (void __user *) UPT_IP(regs) : NULL,
-                       current);
+                       UPT_IS_USER(regs) ? (void __user *) UPT_IP(regs) : NULL);
 }
 
 /*
index 1c943c6..58fe368 100644 (file)
@@ -163,8 +163,7 @@ static void show_segv_info(struct uml_pt_regs *regs)
 static void bad_segv(struct faultinfo fi, unsigned long ip)
 {
        current->thread.arch.faultinfo = fi;
-       force_sig_fault(SIGSEGV, SEGV_ACCERR, (void __user *) FAULT_ADDRESS(fi),
-                       current);
+       force_sig_fault(SIGSEGV, SEGV_ACCERR, (void __user *) FAULT_ADDRESS(fi));
 }
 
 void fatal_sigsegv(void)
@@ -268,13 +267,11 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user,
 
        if (err == -EACCES) {
                current->thread.arch.faultinfo = fi;
-               force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address,
-                               current);
+               force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
        } else {
                BUG_ON(err != -EFAULT);
                current->thread.arch.faultinfo = fi;
-               force_sig_fault(SIGSEGV, si_code, (void __user *) address,
-                               current);
+               force_sig_fault(SIGSEGV, si_code, (void __user *) address);
        }
 
 out:
@@ -304,8 +301,7 @@ void relay_signal(int sig, struct siginfo *si, struct uml_pt_regs *regs)
        if ((err == 0) && (siginfo_layout(sig, code) == SIL_FAULT)) {
                struct faultinfo *fi = UPT_FAULTINFO(regs);
                current->thread.arch.faultinfo = *fi;
-               force_sig_fault(sig, code, (void __user *)FAULT_ADDRESS(*fi),
-                               current);
+               force_sig_fault(sig, code, (void __user *)FAULT_ADDRESS(*fi));
        } else {
                printk(KERN_ERR "Attempted to relay unknown signal %d (si_code = %d) with errno %d\n",
                       sig, code, err);
index fb376d8..a087803 100644 (file)
@@ -248,7 +248,7 @@ void uc32_notify_die(const char *str, struct pt_regs *regs,
                current->thread.error_code = err;
                current->thread.trap_no = trap;
 
-               force_sig_fault(sig, code, addr, current);
+               force_sig_fault(sig, code, addr);
        } else
                die(str, regs, err);
 }
index 313547a..c85ba53 100644 (file)
@@ -124,7 +124,7 @@ static void __do_user_fault(unsigned long addr, unsigned int fsr,
        tsk->thread.address = addr;
        tsk->thread.error_code = fsr;
        tsk->thread.trap_no = 14;
-       force_sig_fault(sig, code, (void __user *)addr, current);
+       force_sig_fault(sig, code, (void __user *)addr);
 }
 
 void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
index 7ea87f4..2f31faf 100644 (file)
@@ -106,7 +106,7 @@ static bool write_ok_or_segv(unsigned long ptr, size_t size)
                thread->cr2             = ptr;
                thread->trap_nr         = X86_TRAP_PF;
 
-               force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)ptr, current);
+               force_sig_fault(SIGSEGV, SEGV_MAPERR, (void __user *)ptr);
                return false;
        } else {
                return true;
index 34d27b2..8f8f197 100644 (file)
@@ -1369,7 +1369,7 @@ void send_sigtrap(struct pt_regs *regs, int error_code, int si_code)
 
        /* Send us the fake SIGTRAP */
        force_sig_fault(SIGTRAP, si_code,
-                       user_mode(regs) ? (void __user *)regs->ip : NULL, current);
+                       user_mode(regs) ? (void __user *)regs->ip : NULL);
 }
 
 void user_single_step_report(struct pt_regs *regs)
index 945b9a0..87095a4 100644 (file)
@@ -256,7 +256,7 @@ do_trap(int trapnr, int signr, char *str, struct pt_regs *regs,
        if (!sicode)
                force_sig(signr);
        else
-               force_sig_fault(signr, sicode, addr, current);
+               force_sig_fault(signr, sicode, addr);
 }
 NOKPROBE_SYMBOL(do_trap);
 
@@ -856,7 +856,7 @@ static void math_error(struct pt_regs *regs, int error_code, int trapnr)
                return;
 
        force_sig_fault(SIGFPE, si_code,
-                       (void __user *)uprobe_get_trap_addr(regs), current);
+                       (void __user *)uprobe_get_trap_addr(regs));
 }
 
 dotraplinkage void do_coprocessor_error(struct pt_regs *regs, long error_code)
index 68cdcd7..5b345ad 100644 (file)
@@ -277,7 +277,7 @@ static void force_sig_info_umip_fault(void __user *addr, struct pt_regs *regs)
        tsk->thread.error_code  = X86_PF_USER | X86_PF_WRITE;
        tsk->thread.trap_nr     = X86_TRAP_PF;
 
-       force_sig_fault(SIGSEGV, SEGV_MAPERR, addr, current);
+       force_sig_fault(SIGSEGV, SEGV_MAPERR, addr);
 
        if (!(show_unhandled_signals && unhandled_signal(tsk, SIGSEGV)))
                return;
index 16a5d1b..46ac96a 100644 (file)
@@ -756,8 +756,7 @@ no_context(struct pt_regs *regs, unsigned long error_code,
                        set_signal_archinfo(address, error_code);
 
                        /* XXX: hwpoison faults will set the wrong code. */
-                       force_sig_fault(signal, si_code, (void __user *)address,
-                                       current);
+                       force_sig_fault(signal, si_code, (void __user *)address);
                }
 
                /*
@@ -918,7 +917,7 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
                if (si_code == SEGV_PKUERR)
                        force_sig_pkuerr((void __user *)address, pkey);
 
-               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address);
 
                return;
        }
@@ -1044,7 +1043,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
                return;
        }
 #endif
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
 }
 
 static noinline void
index 6f26b25..f060348 100644 (file)
@@ -330,7 +330,7 @@ do_unaligned_user (struct pt_regs *regs)
                            "(pid = %d, pc = %#010lx)\n",
                            regs->excvaddr, current->comm,
                            task_pid_nr(current), regs->pc);
-       force_sig_fault(SIGBUS, BUS_ADRALN, (void *) regs->excvaddr, current);
+       force_sig_fault(SIGBUS, BUS_ADRALN, (void *) regs->excvaddr);
 }
 #endif
 
index 2ab0e0d..f81b147 100644 (file)
@@ -157,7 +157,7 @@ bad_area:
        if (user_mode(regs)) {
                current->thread.bad_vaddr = address;
                current->thread.error_code = is_write;
-               force_sig_fault(SIGSEGV, code, (void *) address, current);
+               force_sig_fault(SIGSEGV, code, (void *) address);
                return;
        }
        bad_page_fault(regs, address, SIGSEGV);
@@ -182,7 +182,7 @@ do_sigbus:
         * or user mode.
         */
        current->thread.bad_vaddr = address;
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void *) address, current);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void *) address);
 
        /* Kernel mode? Handle exceptions or die */
        if (!user_mode(regs))
index 507af66..7f87250 100644 (file)
@@ -313,8 +313,7 @@ int force_sig_fault_to_task(int sig, int code, void __user *addr
        , struct task_struct *t);
 int force_sig_fault(int sig, int code, void __user *addr
        ___ARCH_SI_TRAPNO(int trapno)
-       ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr)
-       , struct task_struct *t);
+       ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr));
 int send_sig_fault(int sig, int code, void __user *addr
        ___ARCH_SI_TRAPNO(int trapno)
        ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr)
index e420489..d92b636 100644 (file)
@@ -1645,12 +1645,11 @@ int force_sig_fault_to_task(int sig, int code, void __user *addr
 
 int force_sig_fault(int sig, int code, void __user *addr
        ___ARCH_SI_TRAPNO(int trapno)
-       ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr)
-       , struct task_struct *t)
+       ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr))
 {
        return force_sig_fault_to_task(sig, code, addr
                                       ___ARCH_SI_TRAPNO(trapno)
-                                      ___ARCH_SI_IA64(imm, flags, isr), t);
+                                      ___ARCH_SI_IA64(imm, flags, isr), current);
 }
 
 int send_sig_fault(int sig, int code, void __user *addr