Re: [PATCH -v2 1/2] ratelimit: Extend to print suppressed messages on release

From: Ingo Molnar
Date: Fri Jul 01 2016 - 04:23:07 EST



* Borislav Petkov <bp@xxxxxxxxx> wrote:

> +/* issue num suppressed message on exit */
> +#define RATELIMIT_MSG_ON_RELEASE BIT(0)

So this flag says that we should issue a ratelimit message when it occurs.

> +static inline void ratelimit_state_exit(struct ratelimit_state *rs)
> +{
> + if (!(rs->flags & RATELIMIT_MSG_ON_RELEASE))
> + return;
> +
> + if (rs->missed)
> + printk(KERN_WARNING "%s: %d callbacks suppressed\n",
> + current->comm, rs->missed);

... here we print the message if the RATELIMIT_MSG_ON_RELEASE bit is set.

> +++ b/lib/ratelimit.c
> @@ -46,12 +46,14 @@ int ___ratelimit(struct ratelimit_state *rs, const char *func)
> rs->begin = jiffies;
>
> if (time_is_before_jiffies(rs->begin + rs->interval)) {
> - if (rs->missed)
> + if (rs->missed && !(rs->flags & RATELIMIT_MSG_ON_RELEASE))
> printk(KERN_WARNING "%s: %d callbacks suppressed\n",
> func, rs->missed);

But here we print the message if the RATELIMIT_MSG_ON_RELEASE bit is zero.
Is that intentional?

Also, while we are changing it, I'd like to suggest a different message - it's
talking about 'callbacks' but there's no callback here - we are skipping kernel
log messages. So how about:

pr_warn("%s: %d kernel log lines skipped, due to rate-limiting.\n"

Thanks,

Ingo