printk: remember the message level for multi-line output
Nick Andrew [Mon, 12 May 2008 19:21:04 +0000 (21:21 +0200)]
printk(KERN_ALERT "Danger Will Robinson!\nAlien Approaching!\n");

At present this will result in one message at ALERT level and one
at the current default message loglevel (e.g. WARNING). This is
non-intuitive.

Modify vprintk() to remember the message loglevel each time it
is specified and use it for subsequent lines of output which do
not specify one, within the same call to printk.

Signed-off-by: Nick Andrew <nick@nick-andrew.net>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

kernel/printk.c

index 98ca1b7..475fc22 100644 (file)
@@ -661,6 +661,7 @@ static char printk_buf[1024];
 asmlinkage int vprintk(const char *fmt, va_list args)
 {
        int printed_len = 0;
+       int current_log_level = default_message_loglevel;
        unsigned long flags;
        int this_cpu;
        char *p;
@@ -710,7 +711,6 @@ asmlinkage int vprintk(const char *fmt, va_list args)
         */
        for (p = printk_buf; *p; p++) {
                if (new_text_line) {
-                       int current_log_level = default_message_loglevel;
                        /* If a token, set current_log_level and skip over */
                        if (p[0] == '<' && p[1] >= '0' && p[1] <= '7' &&
                            p[2] == '>') {