Re: [PATCH v4 4/4] pr_emerg add WARN_XX() debugger options

From: Steven Rostedt
Date: Mon Feb 01 2016 - 21:05:32 EST


On Mon, 1 Feb 2016 16:35:52 -0700
Jeffrey Merkey <jeffmerkey@xxxxxxxxx> wrote:
> ---
> include/linux/printk.h | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/include/linux/printk.h b/include/linux/printk.h
> index 51dd6b8..dcfb270 100644
> --- a/include/linux/printk.h
> +++ b/include/linux/printk.h
> @@ -252,8 +252,16 @@ extern asmlinkage void dump_stack(void) __cold;
> * and other debug macros are compiled out unless either DEBUG is defined
> * or CONFIG_DYNAMIC_DEBUG is set.
> */
> +#ifdef CONFIG_DEBUG_WARN
> +#define pr_emerg(fmt, ...) \
> +({ \
> + printk(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__); \
> + BUG(); \

This look rather heavy handed for a debug feature. This will crash any
kernel on a pr-emerg(), similar to a panic on warning. Not only that,
for cases that cal pr_emerg() more than once, it crashes on the first
instance.

What about adding a condition that can be set set in /proc/sys/kernel/
A file called something like crash_on_print_emerg ?

BUG_ON(crash_on_pr_emerg);

-- Steve

> +})
> +#else
> #define pr_emerg(fmt, ...) \
> printk(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__)
> +#endif
> #define pr_alert(fmt, ...) \
> printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
> #define pr_crit(fmt, ...) \