[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20160901005553.GA438@swordfish>
Date: Thu, 1 Sep 2016 09:55:53 +0900
From: Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>
To: Andrew Morton <akpm@...ux-foundation.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>,
Sergey Senozhatsky <sergey.senozhatsky@...il.com>,
Petr Mladek <pmladek@...e.com>, Jan Kara <jack@...e.cz>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] printk/nmi: avoid direct printk()-s from
__printk_nmi_flush()
On (08/31/16 13:15), Andrew Morton wrote:
> > On (08/30/16 15:03), Andrew Morton wrote:
> > > > __printk_nmi_flush() can be called from nmi_panic(), therefore it has to
> > > > test whether it's executed in NMI context and thus must route the messages
> > > > through deferred printk() or via direct printk().
> > >
> > > Why? What misbehaviour does the current code cause?
> >
> > the reasoning behind the `if in_nmi()' in print_nmi_seq_line()
> >
> > if (in_nmi())
> > printk_deferred("%.*s", (end - start) + 1, buf);
> > else
> > printk("%.*s", (end - start) + 1, buf);
> >
> > was as follows (per Petr's commit message)
>
> OK, thanks, I altered the changelog thusly and scheduled the patch for 4.8:
thanks!
-ss
>
> --- txt/printk-nmi-avoid-direct-printk-s-from-__printk_nmi_flush.txt
> +++ txt/printk-nmi-avoid-direct-printk-s-from-__printk_nmi_flush.txt
> @@ -3,8 +3,13 @@
>
> __printk_nmi_flush() can be called from nmi_panic(), therefore it has to
> test whether it's executed in NMI context and thus must route the messages
> -through deferred printk() or via direct printk(). Except for two places
> -where __printk_nmi_flush() does unconditional direct printk() calls:
> +through deferred printk() or via direct printk(). This is to avoid
> +potential deadlocks, as described in cf9b1106c81c45cde ("printk/nmi: flush
> +NMI messages on the system panic").
> +
> +However there remain two places where __printk_nmi_flush() does
> +unconditional direct printk() calls:
> +
> - pr_err("printk_nmi_flush: internal error ...")
> - pr_cont("\n")
>
>
Powered by blists - more mailing lists