• Petr Mladek's avatar
    printk/NMI: handle continuous lines and missing newline · 22c2c7b2
    Petr Mladek authored
    Commit 4bcc595c ("printk: reinstate KERN_CONT for printing
    continuation lines") added back KERN_CONT message header.  As a result
    it might appear in the middle of the line when the parts are squashed
    via the temporary NMI buffer.
    
    A reasonable solution seems to be to split the text in the NNI temporary
    not only by newlines but also by the message headers.
    
    Another solution would be to filter out KERN_CONT when writing to the
    temporary buffer.  But this would complicate the lockless handling.
    Also it would not solve problems with a missing newline that was there
    even before the KERN_CONT stuff.
    
    This patch moves the temporary buffer handling into separate function.
    I played with it and it seems that using the char pointers make the code
    easier to read.
    
    Also it prints the final newline as a continuous line.
    
    Finally, it moves handling of the s->len overflow into the paranoid
    check.  And allows to recover from the disaster.
    
    Link: http://lkml.kernel.org/r/1478695291-12169-2-git-send-email-pmladek@suse.comSigned-off-by: default avatarPetr Mladek <pmladek@suse.com>
    Reviewed-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Jason Wessel <jason.wessel@windriver.com>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: Chris Mason <clm@fb.com>
    Cc: Josef Bacik <jbacik@fb.com>
    Cc: David Sterba <dsterba@suse.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    22c2c7b2
nmi.c 7.54 KB