summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Hieber <r.hieber@pengutronix.de>2018-11-20 21:50:44 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-11-21 09:49:51 +0100
commit8ef6940ce9ffff4ccbd87a684b387fa47fc82ab7 (patch)
treea97c007e14b20f2fb052abba4c357761b4930159
parentd0d3ca42feda308e07d29c50ba868e770a899814 (diff)
downloadbarebox-8ef6940ce9ffff4ccbd87a684b387fa47fc82ab7.tar.gz
barebox-8ef6940ce9ffff4ccbd87a684b387fa47fc82ab7.tar.xz
printk: make line continuation not result in stray emergency errors
The levels of pr_emerg() and pr_cont() are both set to 0. When pr_cont() is used to continue a previous line, and colored console output is enabled, this can result in garbled log messages being printed, e.g.: ERROR: HABv4: -------- HAB warning Event 0 -------- ERROR: HABv4: event data: ERROR: HABv4: dbEMERG: 00EMERG: 24EMERG: 42EMERG: 69EMERG: 30EMERG: e1EMERG: 1d ERROR: HABv4: 00EMERG: 04EMERG: 00EMERG: 02EMERG: 40EMERG: 00EMERG: 36EMERG: 06 ERROR: HABv4: 55EMERG: 55EMERG: 00EMERG: 03EMERG: 00EMERG: 00EMERG: 00EMERG: 00 ERROR: HABv4: 00EMERG: 00EMERG: 00EMERG: 00EMERG: 00EMERG: 00EMERG: 00EMERG: 00 ERROR: HABv4: 00EMERG: 00EMERG: 00EMERG: 01EMERG: ERROR: HABv4: Status: Operation completed with warning (0x69) Note the additional "EMERG: " in front of each continuation, which is inserted by pr_cont(buf) being expanded to pr_printk(0, buf). These additional strings show up in deep red on the console (which is not supported in Git commit messages…). One might argue that this is the same color as the "ERROR: " prefix, but when pr_cont() is used with pr_notice() and pr_warning(), which are printed in blue and yellow respectively, at least then the change in color would lead to additional confusion. The log level argument to pr_printk is defined as int, so we can solve this by defining the level for pr_cont() to -1, which is not used for any loglevel: ERROR: HABv4: -------- HAB warning Event 0 -------- ERROR: HABv4: event data: ERROR: HABv4: db 00 24 42 69 30 e1 1d ERROR: HABv4: 00 04 00 02 40 00 36 06 ERROR: HABv4: 55 55 00 03 00 00 00 00 ERROR: HABv4: 00 00 00 00 00 00 00 00 ERROR: HABv4: 00 00 00 01 ERROR: HABv4: Status: Operation completed with warning (0x69) Fixes: 0fcefdd9369050f35a88b41dcd42cc5a3c6c6b33 ("printk: Add pr_cont") Fixes: ea0e077ed65a003e4d7a1e023aee38cbe2d14898 ("printk: Fix pr_cont") Signed-off-by: Roland Hieber <r.hieber@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--include/printk.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/printk.h b/include/printk.h
index 4384fb85ea..858e800543 100644
--- a/include/printk.h
+++ b/include/printk.h
@@ -91,7 +91,7 @@ static inline int pr_print(int level, const char *format, ...)
#define pr_debug(fmt, arg...) __pr_printk(7, pr_fmt(fmt), ##arg)
#define debug(fmt, arg...) __pr_printk(7, pr_fmt(fmt), ##arg)
#define pr_vdebug(fmt, arg...) __pr_printk(8, pr_fmt(fmt), ##arg)
-#define pr_cont(fmt, arg...) __pr_printk(0, fmt, ##arg)
+#define pr_cont(fmt, arg...) __pr_printk(-1, fmt, ##arg)
#define printk_once(fmt, ...) \
({ \