signal/riscv: Remove tsk parameter from do_trap
authorEric W. Biederman <ebiederm@xmission.com>
Wed, 6 Feb 2019 01:10:48 +0000 (19:10 -0600)
committerEric W. Biederman <ebiederm@xmission.com>
Wed, 29 May 2019 14:31:42 +0000 (09:31 -0500)
The do_trap function is always called with tsk == current.
Make that obvious by removing the tsk parameter.

This also makes it clear that do_trap calls force_sig_fault
on the current task.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
arch/riscv/include/asm/bug.h
arch/riscv/kernel/traps.c
arch/riscv/mm/fault.c

index 52a1fbdeab3bb2bca2827bdf68a2dc0c79d814a7..f1390914ba7a94268087ac798477758e3b7cdde2 100644 (file)
@@ -94,7 +94,7 @@ struct task_struct;
 
 extern void die(struct pt_regs *regs, const char *str);
 extern void do_trap(struct pt_regs *regs, int signo, int code,
-       unsigned long addr, struct task_struct *tsk);
+       unsigned long addr);
 
 #endif /* !__ASSEMBLY__ */
 
index 3d1a651dc54c71638fa3435ad6d66dee33dff6e7..71445a928c1b130d2cadab61b8375face5ba3318 100644 (file)
@@ -63,9 +63,10 @@ void die(struct pt_regs *regs, const char *str)
                do_exit(SIGSEGV);
 }
 
-void do_trap(struct pt_regs *regs, int signo, int code,
-       unsigned long addr, struct task_struct *tsk)
+void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
 {
+       struct task_struct *tsk = current;
+
        if (show_unhandled_signals && unhandled_signal(tsk, signo)
            && printk_ratelimit()) {
                pr_info("%s[%d]: unhandled signal %d code 0x%x at 0x" REG_FMT,
@@ -82,7 +83,7 @@ static void do_trap_error(struct pt_regs *regs, int signo, int code,
        unsigned long addr, const char *str)
 {
        if (user_mode(regs)) {
-               do_trap(regs, signo, code, addr, current);
+               do_trap(regs, signo, code, addr);
        } else {
                if (!fixup_exception(regs))
                        die(regs, str);
index cec8be9e2d6aca1049945fc0a4200f0ef36071b0..0a0081d9b766253829e1e60fa508c4e65bb6c220 100644 (file)
@@ -181,7 +181,7 @@ bad_area:
        up_read(&mm->mmap_sem);
        /* User mode accesses just cause a SIGSEGV */
        if (user_mode(regs)) {
-               do_trap(regs, SIGSEGV, code, addr, tsk);
+               do_trap(regs, SIGSEGV, code, addr);
                return;
        }
 
@@ -217,7 +217,7 @@ do_sigbus:
        /* Kernel mode? Handle exceptions or die */
        if (!user_mode(regs))
                goto no_context;
-       do_trap(regs, SIGBUS, BUS_ADRERR, addr, tsk);
+       do_trap(regs, SIGBUS, BUS_ADRERR, addr);
        return;
 
 vmalloc_fault:
@@ -231,7 +231,7 @@ vmalloc_fault:
 
                /* User mode accesses just cause a SIGSEGV */
                if (user_mode(regs))
-                       return do_trap(regs, SIGSEGV, code, addr, tsk);
+                       return do_trap(regs, SIGSEGV, code, addr);
 
                /*
                 * Synchronize this task's top level page-table