Re: [PATCH v2] x86: fix output of show_stack_log_lvl()

From: Steven Rostedt
Date: Fri Feb 20 2015 - 12:04:27 EST


On Thu, 19 Feb 2015 21:13:29 -0800
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Feb 19, 2015 8:45 PM, "Steven Rostedt" <rostedt@xxxxxxxxxxx> wrote:
> >
> > This looks like a bug in printk(). Why doesn't pr_cont() continue? It
> > shouldn't care if there's a newline or not. pr_cont() is supposed to
> > continue whatever the last printk log level was.
>
> pr_cont() should continue the current line. If there was a behind, and it's
> a new line, then pr_cont() is meaningless.

Ah, you are right. I got confused by the lack of comments around
pr_cont. Now KERN_CONT is nicely commented, but unfortunately that
comment exists in a different file.

How about adding the below patch so people like me wont get confused
again.

-- Steve

printk: Comment pr_cont() stating it is only to continue a line

KERN_CONT is nicely commented in kern_levels.h, but pr_cont() is now
used more often, and it lacks the comment stating what it is used for.
It can be confused as continuing the log level, but that is not its
purpose. It's purpose is to continue a line that had no newline
enclosed. This should be documented by pr_cont() as well.

Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx>
---
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 4d5bf57..937d2f3 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -255,6 +255,11 @@ extern asmlinkage void dump_stack(void) __cold;
printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)
#define pr_info(fmt, ...) \
printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
+/*
+ * Like KERN_CONT, pr_cont() should only be used when continuing
+ * a line with no newline ('\n') enclosed. Otherwise it defaults
+ * back to KERN_DEFAULT.
+ */
#define pr_cont(fmt, ...) \
printk(KERN_CONT fmt, ##__VA_ARGS__)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/