Skip to contentSkip to conversation

printk-times bugfix for loglevel-only printks

PATCH New Tim Bird 1 participant 1 message Mar 10, 2005

lore
Share & tools
lore

Tim Bird

author
#0 lore raw

PATCH 1/1 printk-times bugfix for loglevel-only printks

Linus,

This patch fixes a bug with the recently added printk-times feature.

In the case where a printk consists of only the log level (followed subsequently by printks with more text for the same line), the printk-times code doesn't correctly recognize the end of the string, and starts emitting chars at the 0 byte at the end of the string.

The patch below fixes this problem. It also adjusts the handling of printed_len in the routine, which was affected by the printk-times feature.

Please apply. Thanks.
-- Tim Bird, Senior Software Engineer, Sony Electronics

diffstat:

 printk.c |    5 +++++
 1 files changed, 5 insertions(+)

--------------------------------------

kernel/printk.c +5 -0
diff -pruN printk-1/kernel/printk.c printk-fix1/kernel/printk.c
@@ -579,6 +579,7 @@ asmlinkage int vprintk(const char *fmt,
 				   p[1] <= '7' && p[2] == '>') {
 					loglev_char = p[1];
 					p += 3;
+					printed_len += 3;
 				} else {
 					loglev_char = default_message_loglevel
 						+ '0';
@@ -593,6 +594,7 @@ asmlinkage int vprintk(const char *fmt,
 
 				for (tp = tbuf; tp < tbuf + tlen; tp++)
 					emit_log_char (*tp);
+				printed_len += tlen - 3;
 			} else {
 				if (p[0] != '<' || p[1] < '0' ||
 				   p[1] > '7' || p[2] != '>') {
@@ -601,8 +603,11 @@ asmlinkage int vprintk(const char *fmt,
 						+ '0');
 					emit_log_char('>');
 				}
+				printed_len += 3;
 			}
 			log_level_unknown = 0;
+			if (!*p)
+				break;
 		}
 		emit_log_char(*p);
 		if (*p == '\n')