• Matt Redfearn's avatar
    printk/console: Always disable boot consoles that use init memory before it is freed · 2b1be689
    Matt Redfearn authored
    Commit 4c30c6f5 ("kernel/printk: do not turn off bootconsole in
    printk_late_init() if keep_bootcon") added a check on keep_bootcon to
    ensure that boot consoles were kept around until the real console is
    registered.
    
    This can lead to problems if the boot console data and code are in the
    init section, since it can be freed before the boot console is
    unregistered.
    
    Commit 81cc26f2 ("printk: only unregister boot consoles when
    necessary") fixed this a better way. It allowed to keep boot consoles
    that did not use init data. Unfortunately it did not remove the check
    of keep_bootcon.
    
    This can lead to crashes and weird panics when the bootconsole is
    accessed after free, especially if page poisoning is in use and the
    code / data have been overwritten with a poison value.
    
    To prevent this, always free the boot console if it is within the init
    section. In addition, print a warning about that the console is removed
    prematurely.
    
    Finally there is a new comment how to avoid the warning. It replaced
    an explanation that duplicated a more comprehensive function
    description few lines above.
    
    Fixes: 4c30c6f5 ("kernel/printk: do not turn off bootconsole in printk_late_init() if keep_bootcon")
    Link: http://lkml.kernel.org/r/1500036673-7122-2-git-send-email-pmladek@suse.com
    
    
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Alan Cox <gnomes@lxorguk.ukuu.org.uk>
    Cc: "Fabio M. Di Nitto" <fdinitto@redhat.com>
    Cc: linux-serial@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
    [pmladek@suse.com: print the warning, code and comments clean up]
    Reviewed-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
    2b1be689
printk.c 79.1 KB