lkml.org 
[lkml]   [2020]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 030/344] printk: fix exclusive_console replaying
    Date
    From: John Ogness <john.ogness@linutronix.de>

    [ Upstream commit def97da136515cb289a14729292c193e0a93bc64 ]

    Commit f92b070f2dc8 ("printk: Do not miss new messages when replaying
    the log") introduced a new variable @exclusive_console_stop_seq to
    store when an exclusive console should stop printing. It should be
    set to the @console_seq value at registration. However, @console_seq
    is previously set to @syslog_seq so that the exclusive console knows
    where to begin. This results in the exclusive console immediately
    reactivating all the other consoles and thus repeating the messages
    for those consoles.

    Set @console_seq after @exclusive_console_stop_seq has stored the
    current @console_seq value.

    Fixes: f92b070f2dc8 ("printk: Do not miss new messages when replaying the log")
    Link: http://lkml.kernel.org/r/20191219115322.31160-1-john.ogness@linutronix.de
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    kernel/printk/printk.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
    index ca65327a6de8c..c0a5b56aea4e8 100644
    --- a/kernel/printk/printk.c
    +++ b/kernel/printk/printk.c
    @@ -2770,8 +2770,6 @@ void register_console(struct console *newcon)
    * for us.
    */
    logbuf_lock_irqsave(flags);
    - console_seq = syslog_seq;
    - console_idx = syslog_idx;
    /*
    * We're about to replay the log buffer. Only do this to the
    * just-registered console to avoid excessive message spam to
    @@ -2783,6 +2781,8 @@ void register_console(struct console *newcon)
    */
    exclusive_console = newcon;
    exclusive_console_stop_seq = console_seq;
    + console_seq = syslog_seq;
    + console_idx = syslog_idx;
    logbuf_unlock_irqrestore(flags);
    }
    console_unlock();
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-02-21 09:03    [W:2.664 / U:0.488 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site