Re: [PATCH] lib/bug.c: use common WARN helper

From: Prarit Bhargava
Date: Tue Feb 23 2016 - 08:13:51 EST




On 02/22/2016 10:54 PM, Josh Poimboeuf wrote:
> The traceoff_on_warning option doesn't have any effect on s390, powerpc,
> arm64, parisc, and sh because there are two different types of WARN
> implementations:
>
> 1) The above mentioned architectures treat WARN() as a special case of a
> BUG() exception. They handle warnings in report_bug() in lib/bug.c.
>
> 2) All other architectures just call warn_slowpath_*() directly. Their
> warnings are handled in warn_slowpath_common() in kernel/panic.c.
>
> Support traceoff_on_warning on all architectures and prevent any future
> divergence by using a single common function to emit the warning.
>
> Also remove the '()' from '%pS()', because the parentheses look funky:
>
> [ 45.607629] WARNING: at /root/warn_mod/warn_mod.c:17 .init_dummy+0x20/0x40 [warn_mod]()
>
> Reported-by: Chunyu Hu <chuhu@xxxxxxxxxx>
> Signed-off-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>

<snip>

> -
> - print_modules();
> - show_regs(regs);
> - print_oops_end_marker();
> - /* Just a warning, don't kill lockdep. */
> - add_taint(BUG_GET_TAINT(bug), LOCKDEP_STILL_OK);
> + __warn(file, line, (void *)bugaddr, BUG_GET_TAINT(bug), regs,
> + NULL);
> +

^^^ minor minor minor nit: extra line here. Not a big deal but change it if
anyone else complains.

Other than that ...

Acked-and-tested-by: Prarit Bhargava <prarit@xxxxxxxxxx>

P.

> return BUG_TRAP_TYPE_WARN;
> }
>
>