diff options
author | Suzuki K. Poulose <suzuki.poulose@arm.com> | 2015-07-03 10:08:08 -0400 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2015-07-03 12:03:06 -0400 |
commit | f871d26807078cf4cc0a64a97ee2c6bb513a4397 (patch) | |
tree | 84fb207de44498b8bd0a1f7dffd942d3ee33ffe2 | |
parent | f9058929f2acbb273ec83104ebeeab0593595e15 (diff) |
arm64: Fix show_unhandled_signal_ratelimited usage
Commit 86dca36e6ba introduced ratelimited usage for
'unhandled_signal' messages.
The commit checks the ratelimit irrespective of whether
the signal is handled or not, which is wrong and leads
to false reports like the below in dmesg :
__do_user_fault: 127 callbacks suppressed
Do the ratelimit check only if the signal is unhandled.
Fixes: 86dca36e6ba0 ("arm64: use private ratelimit state along with show_unhandled_signals")
Cc: Vladimir Murzin <Vladimir.Murzin@arm.com>
Signed-off-by: Suzuki K. Poulose <suzuki.poulose@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
-rw-r--r-- | arch/arm64/kernel/traps.c | 2 | ||||
-rw-r--r-- | arch/arm64/mm/fault.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index a12251c074a8..566bc4c35040 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c | |||
@@ -335,7 +335,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) | |||
335 | if (call_undef_hook(regs) == 0) | 335 | if (call_undef_hook(regs) == 0) |
336 | return; | 336 | return; |
337 | 337 | ||
338 | if (show_unhandled_signals_ratelimited() && unhandled_signal(current, SIGILL)) { | 338 | if (unhandled_signal(current, SIGILL) && show_unhandled_signals_ratelimited()) { |
339 | pr_info("%s[%d]: undefined instruction: pc=%p\n", | 339 | pr_info("%s[%d]: undefined instruction: pc=%p\n", |
340 | current->comm, task_pid_nr(current), pc); | 340 | current->comm, task_pid_nr(current), pc); |
341 | dump_instr(KERN_INFO, regs); | 341 | dump_instr(KERN_INFO, regs); |
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 66bd92ab6f7b..ffa36e2d18e6 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c | |||
@@ -115,7 +115,7 @@ static void __do_user_fault(struct task_struct *tsk, unsigned long addr, | |||
115 | { | 115 | { |
116 | struct siginfo si; | 116 | struct siginfo si; |
117 | 117 | ||
118 | if (show_unhandled_signals_ratelimited() && unhandled_signal(tsk, sig)) { | 118 | if (unhandled_signal(tsk, sig) && show_unhandled_signals_ratelimited()) { |
119 | pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n", | 119 | pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n", |
120 | tsk->comm, task_pid_nr(tsk), fault_name(esr), sig, | 120 | tsk->comm, task_pid_nr(tsk), fault_name(esr), sig, |
121 | addr, esr); | 121 | addr, esr); |