Re: [PATCH v3 1/4] printk: Add panic_in_progress helper

From: Stephen Brennan
Date: Tue Feb 01 2022 - 20:42:24 EST


Stephen Brennan <stephen.s.brennan@xxxxxxxxxx> writes:
> This will be used help avoid deadlocks during panics. Although it would
> be better to include this in linux/panic.h, it would require that header
> to include linux/atomic.h as well. On some architectures, this results
> in a circular dependency. So instead add the helper directly to
> printk.c.
>
> Suggested-by: Petr Mladek <pmladek@xxxxxxxx>
> Signed-off-by: Stephen Brennan <stephen.s.brennan@xxxxxxxxxx>
> Reviewed-by: Petr Mladek <pmladek@xxxxxxxx>
> ---
>
> Notes:
> v3: Move the helper into printk.c due to circular include
> v2: Switch from macro to static inline function
>
> kernel/printk/printk.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> index 57b132b658e1..b33c2861a8fc 100644
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -1762,6 +1762,11 @@ static DEFINE_RAW_SPINLOCK(console_owner_lock);
> static struct task_struct *console_owner;
> static bool console_waiter;
>
> +static bool panic_in_progress(void)
> +{
> + return unlikely(atomic_read(&panic_cpu) != PANIC_CPU_INVALID);
> +}
> +

Unfortunately this is defined within a (very large)
#ifdef CONFIG_PRINTK section. Thanks to the kbuild bot which will have
earned the reported-by tag on this patch :D

v4 will be tomorrow. Sorry for the noise everyone!

> /**
> * console_lock_spinning_enable - mark beginning of code where another
> * thread might safely busy wait
> --
> 2.30.2