aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuzuki K. Poulose <suzuki.poulose@arm.com>2015-07-03 10:08:08 -0400
committerCatalin Marinas <catalin.marinas@arm.com>2015-07-03 12:03:06 -0400
commitf871d26807078cf4cc0a64a97ee2c6bb513a4397 (patch)
tree84fb207de44498b8bd0a1f7dffd942d3ee33ffe2
parentf9058929f2acbb273ec83104ebeeab0593595e15 (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.c2
-rw-r--r--arch/arm64/mm/fault.c2
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);