Skip to content

Commit

Permalink
powerpc/traps: Avoid rate limit messages from show unhandled signals
Browse files Browse the repository at this point in the history
In the recent commit to add an explicit ratelimit state when showing
unhandled signals, commit 35a52a1 ("powerpc/traps: Use an
explicit ratelimit state for show_signal_msg()"), I put the check of
show_unhandled_signals and the ratelimit state before the call to
unhandled_signal() so as to avoid unnecessarily calling the latter
when show_unhandled_signals is false.

However that causes us to check the ratelimit state on every call, so
if we take a lot of *handled* signals that has the effect of making
the ratelimit code print warnings that callbacks have been suppressed
when they haven't.

So rearrange the code so that we check show_unhandled_signals first,
then call unhandled_signal() and finally check the ratelimit state.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Murilo Opsfelder Araujo <muriloo@linux.ibm.com>
  • Loading branch information
Michael Ellerman committed Aug 20, 2018
1 parent 993ff6d commit 997dd26
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions arch/powerpc/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,22 +315,21 @@ void user_single_step_siginfo(struct task_struct *tsk,
info->si_addr = (void __user *)regs->nip;
}

static bool show_unhandled_signals_ratelimited(void)
static void show_signal_msg(int signr, struct pt_regs *regs, int code,
unsigned long addr)
{
static DEFINE_RATELIMIT_STATE(rs, DEFAULT_RATELIMIT_INTERVAL,
DEFAULT_RATELIMIT_BURST);
return show_unhandled_signals && __ratelimit(&rs);
}

static void show_signal_msg(int signr, struct pt_regs *regs, int code,
unsigned long addr)
{
if (!show_unhandled_signals_ratelimited())
if (!show_unhandled_signals)
return;

if (!unhandled_signal(current, signr))
return;

if (!__ratelimit(&rs))
return;

pr_info("%s[%d]: %s (%d) at %lx nip %lx lr %lx code %x",
current->comm, current->pid, signame(signr), signr,
addr, regs->nip, regs->link, code);
Expand Down

0 comments on commit 997dd26

Please sign in to comment.