1
0
Fork 0
alistair23-linux/kernel/printk
Sergey Senozhatsky 19feeff18b printk/nmi: avoid direct printk()-s from __printk_nmi_flush()
__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().

This is to avoid potential deadlocks, as described in commit
cf9b1106c8 ("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")

Factor out print_nmi_seq_line() parts into a new printk_nmi_flush_line()
function, which takes care of in_nmi(), and use it in
__printk_nmi_flush() for printing and error-reporting.

Link: http://lkml.kernel.org/r/20160830161354.581-1-sergey.senozhatsky@gmail.com
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2016-09-01 17:52:01 -07:00
..
Makefile printk/nmi: generic solution for safe printk in NMI 2016-05-20 17:58:30 -07:00
braille.c printk: fix parsing of "brl=" option 2016-08-26 17:39:35 -07:00
braille.h printk: move braille console support into separate braille.[ch] files 2013-07-31 14:41:03 -07:00
console_cmdline.h console: Fix console name size mismatch 2015-03-07 03:39:55 +01:00
internal.h Revert "printk: create pr_<level> functions" 2016-08-09 10:48:18 -07:00
nmi.c printk/nmi: avoid direct printk()-s from __printk_nmi_flush() 2016-09-01 17:52:01 -07:00
printk.c Revert "printk: create pr_<level> functions" 2016-08-09 10:48:18 -07:00