forked from Minki/linux
printk: always use deferred printk when flush printk_safe lines
Always use printk_deferred() in printk_safe_flush_line(). Flushing can be done from NMI or printk_safe contexts (when we are in panic), so we can't call console drivers, yet still want to store the messages in the logbuf buffer. Therefore we use a deferred printk version. Link: http://lkml.kernel.org/r/20170206164253.GA463@tigerII.localdomain Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Jan Kara <jack@suse.cz> Cc: Tejun Heo <tj@kernel.org> Cc: Calvin Owens <calvinowens@fb.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Peter Hurley <peter@hurleysoftware.com> Cc: linux-kernel@vger.kernel.org Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Suggested-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Petr Mladek <pmladek@suse.com> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
099f1c84c0
commit
7acac3445a
@ -110,17 +110,15 @@ again:
|
||||
return add;
|
||||
}
|
||||
|
||||
static void printk_safe_flush_line(const char *text, int len)
|
||||
static inline void printk_safe_flush_line(const char *text, int len)
|
||||
{
|
||||
/*
|
||||
* The buffers are flushed in NMI only on panic. The messages must
|
||||
* go only into the ring buffer at this stage. Consoles will get
|
||||
* explicitly called later when a crashdump is not generated.
|
||||
* Avoid any console drivers calls from here, because we may be
|
||||
* in NMI or printk_safe context (when in panic). The messages
|
||||
* must go only into the ring buffer at this stage. Consoles will
|
||||
* get explicitly called later when a crashdump is not generated.
|
||||
*/
|
||||
if (in_nmi())
|
||||
printk_deferred("%.*s", len, text);
|
||||
else
|
||||
printk("%.*s", len, text);
|
||||
printk_deferred("%.*s", len, text);
|
||||
}
|
||||
|
||||
/* printk part of the temporary buffer line by line */
|
||||
|
Loading…
Reference in New Issue
Block a user