diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/riscv/include/asm/bug.h | 2 | ||||
| -rw-r--r-- | arch/riscv/kernel/traps.c | 7 | ||||
| -rw-r--r-- | arch/riscv/mm/fault.c | 6 |
3 files changed, 8 insertions, 7 deletions
diff --git a/arch/riscv/include/asm/bug.h b/arch/riscv/include/asm/bug.h index 52a1fbdeab3b..f1390914ba7a 100644 --- a/arch/riscv/include/asm/bug.h +++ b/arch/riscv/include/asm/bug.h | |||
| @@ -94,7 +94,7 @@ struct task_struct; | |||
| 94 | 94 | ||
| 95 | extern void die(struct pt_regs *regs, const char *str); | 95 | extern void die(struct pt_regs *regs, const char *str); |
| 96 | extern void do_trap(struct pt_regs *regs, int signo, int code, | 96 | extern void do_trap(struct pt_regs *regs, int signo, int code, |
| 97 | unsigned long addr, struct task_struct *tsk); | 97 | unsigned long addr); |
| 98 | 98 | ||
| 99 | #endif /* !__ASSEMBLY__ */ | 99 | #endif /* !__ASSEMBLY__ */ |
| 100 | 100 | ||
diff --git a/arch/riscv/kernel/traps.c b/arch/riscv/kernel/traps.c index 3d1a651dc54c..71445a928c1b 100644 --- a/arch/riscv/kernel/traps.c +++ b/arch/riscv/kernel/traps.c | |||
| @@ -63,9 +63,10 @@ void die(struct pt_regs *regs, const char *str) | |||
| 63 | do_exit(SIGSEGV); | 63 | do_exit(SIGSEGV); |
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | void do_trap(struct pt_regs *regs, int signo, int code, | 66 | void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr) |
| 67 | unsigned long addr, struct task_struct *tsk) | ||
| 68 | { | 67 | { |
| 68 | struct task_struct *tsk = current; | ||
| 69 | |||
| 69 | if (show_unhandled_signals && unhandled_signal(tsk, signo) | 70 | if (show_unhandled_signals && unhandled_signal(tsk, signo) |
| 70 | && printk_ratelimit()) { | 71 | && printk_ratelimit()) { |
| 71 | pr_info("%s[%d]: unhandled signal %d code 0x%x at 0x" REG_FMT, | 72 | 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, | |||
| 82 | unsigned long addr, const char *str) | 83 | unsigned long addr, const char *str) |
| 83 | { | 84 | { |
| 84 | if (user_mode(regs)) { | 85 | if (user_mode(regs)) { |
| 85 | do_trap(regs, signo, code, addr, current); | 86 | do_trap(regs, signo, code, addr); |
| 86 | } else { | 87 | } else { |
| 87 | if (!fixup_exception(regs)) | 88 | if (!fixup_exception(regs)) |
| 88 | die(regs, str); | 89 | die(regs, str); |
diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index cec8be9e2d6a..0a0081d9b766 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c | |||
| @@ -181,7 +181,7 @@ bad_area: | |||
| 181 | up_read(&mm->mmap_sem); | 181 | up_read(&mm->mmap_sem); |
| 182 | /* User mode accesses just cause a SIGSEGV */ | 182 | /* User mode accesses just cause a SIGSEGV */ |
| 183 | if (user_mode(regs)) { | 183 | if (user_mode(regs)) { |
| 184 | do_trap(regs, SIGSEGV, code, addr, tsk); | 184 | do_trap(regs, SIGSEGV, code, addr); |
| 185 | return; | 185 | return; |
| 186 | } | 186 | } |
| 187 | 187 | ||
| @@ -217,7 +217,7 @@ do_sigbus: | |||
| 217 | /* Kernel mode? Handle exceptions or die */ | 217 | /* Kernel mode? Handle exceptions or die */ |
| 218 | if (!user_mode(regs)) | 218 | if (!user_mode(regs)) |
| 219 | goto no_context; | 219 | goto no_context; |
| 220 | do_trap(regs, SIGBUS, BUS_ADRERR, addr, tsk); | 220 | do_trap(regs, SIGBUS, BUS_ADRERR, addr); |
| 221 | return; | 221 | return; |
| 222 | 222 | ||
| 223 | vmalloc_fault: | 223 | vmalloc_fault: |
| @@ -231,7 +231,7 @@ vmalloc_fault: | |||
| 231 | 231 | ||
| 232 | /* User mode accesses just cause a SIGSEGV */ | 232 | /* User mode accesses just cause a SIGSEGV */ |
| 233 | if (user_mode(regs)) | 233 | if (user_mode(regs)) |
| 234 | return do_trap(regs, SIGSEGV, code, addr, tsk); | 234 | return do_trap(regs, SIGSEGV, code, addr); |
| 235 | 235 | ||
| 236 | /* | 236 | /* |
| 237 | * Synchronize this task's top level page-table | 237 | * Synchronize this task's top level page-table |
