signal: Explicitly call force_sig_fault on current
authorEric W. Biederman <ebiederm@xmission.com>
Thu, 7 Feb 2019 15:25:08 +0000 (09:25 -0600)
committerEric W. Biederman <ebiederm@xmission.com>
Wed, 29 May 2019 14:31:43 +0000 (09:31 -0500)
Update the calls of force_sig_fault that pass in a variable that is
set to current earlier to explicitly use current.

This is to make the next change that removes the task parameter
from force_sig_fault easier to verify.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
14 files changed:
arch/arc/kernel/traps.c
arch/arc/mm/fault.c
arch/arm/mm/fault.c
arch/mips/mm/fault.c
arch/nds32/kernel/traps.c
arch/nds32/mm/fault.c
arch/openrisc/mm/fault.c
arch/riscv/kernel/traps.c
arch/sh/math-emu/math.c
arch/unicore32/mm/fault.c
arch/x86/kernel/ptrace.c
arch/x86/kernel/traps.c
arch/x86/kernel/umip.c
arch/x86/mm/fault.c

index a7fcbc0d39432767dcde680f2271137a125742ed..e618fbb3e28df84ace37590ac196ea14565f7037 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, tsk);
+               force_sig_fault(signo, si_code, addr, current);
 
        } else {
                /* If not due to copy_(to|from)_user, we are doomed */
index 8df1638259f3f2daa6b7d3cd3f70f54c3094017a..d5d4758d7e7544b1a836ce58a8d9150f86f92bdc 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, tsk);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
                return;
        }
 
@@ -237,5 +237,5 @@ do_sigbus:
                goto no_context;
 
        tsk->thread.fault_address = address;
-       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, tsk);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
 }
index 324def0279b27af45c610803fd2d83f026bd4680..03007ea4cc72c5673f32112f707dc24a37c8f3cd 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, tsk);
+       force_sig_fault(sig, code, (void __user *)addr, current);
 }
 
 void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
index 73d8a0f0b810c669d7d541704ab417a386e2cb74..e63abd492f658317a7f682a80a6883af670f1b54 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, tsk);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
                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, tsk);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
 
        return;
 #ifndef CONFIG_64BIT
index 66f197efcec9cd9f8f367a703baf524233a19aae..a16e97f7bc7551a34dad13c6e0e34e52fca99c23 100644 (file)
@@ -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), tsk);
+                       (void __user *)instruction_pointer(regs), current);
 }
 
 void do_debug_trap(unsigned long entry, unsigned long addr,
index 68d5f2a27f38b0e5a60335bd20d34f17317db1f0..38441113c202071ce349a44f8d338f2cdddd3c91 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, tsk);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)addr, current);
                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, tsk);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)addr, current);
 
        return;
 
index dc4dbafc1d83254066687dce319aaf3b16c2d752..f8b3a5a6ba3af0450096973876e2c5cd54727f12 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, tsk);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
                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, tsk);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
 
        /* Kernel mode? Handle exceptions or die */
        if (!user_mode(regs))
index 71445a928c1b130d2cadab61b8375face5ba3318..6d67892dfc82bc90a25f631b9837402b87692eba 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, tsk);
+       force_sig_fault(signo, code, (void __user *)addr, current);
 }
 
 static void do_trap_error(struct pt_regs *regs, int signo, int code,
index a0fa8fc887399ee4f124f50c38f3d2c997f3649b..fe261b0983cc50dddf1959428a4016a29eb2a13b 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, tsk);
+                                       (void __user *)regs->pc, current);
                }
 
                regs->pc = nextpc;
index cadee0b3b4e0a5f243872f6b336d88c97bfc2da0..313547a935133e0b47fbc54e5502e2c98561323b 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, tsk);
+       force_sig_fault(sig, code, (void __user *)addr, current);
 }
 
 void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
index 00148141f1389f7d33a0d777e9946c58fb603c22..34d27b2dc7a112a8afb4610a3e36c9212ed96ae4 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, tsk);
+                       user_mode(regs) ? (void __user *)regs->ip : NULL, current);
 }
 
 void user_single_step_report(struct pt_regs *regs)
index 30a9b843ef045d28774f4b05b883f8a5a7d48ce2..945b9a0719dd698c8db1c8d6b0bb8afc1ea46947 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, tsk);
+               force_sig_fault(signr, sicode, addr, current);
 }
 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), task);
+                       (void __user *)uprobe_get_trap_addr(regs), current);
 }
 
 dotraplinkage void do_coprocessor_error(struct pt_regs *regs, long error_code)
index f8f3cfda01ae02cc5ec91bbf0adfe6477e60a05b..68cdcd717c85f99a33fb2c4ef7cc4a17c5a47a67 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, tsk);
+       force_sig_fault(SIGSEGV, SEGV_MAPERR, addr, current);
 
        if (!(show_unhandled_signals && unhandled_signal(tsk, SIGSEGV)))
                return;
index c431326ee3fa823105599d4427523caf64feb6b5..16a5d1b615a72408ea1535e00608a3e4baeff299 100644 (file)
@@ -757,7 +757,7 @@ no_context(struct pt_regs *regs, unsigned long error_code,
 
                        /* XXX: hwpoison faults will set the wrong code. */
                        force_sig_fault(signal, si_code, (void __user *)address,
-                                       tsk);
+                                       current);
                }
 
                /*
@@ -918,7 +918,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, tsk);
+               force_sig_fault(SIGSEGV, si_code, (void __user *)address, current);
 
                return;
        }
@@ -1044,7 +1044,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, tsk);
+       force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, current);
 }
 
 static noinline void