From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Petr Mladek <pmladek@suse.com>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
Peter Zijlstra <peterz@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jslaby@suse.cz>,
linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] printk: Correctly handle preemption in console_unlock()
Date: Wed, 18 Jan 2017 05:45:51 +0000 [thread overview]
Message-ID: <20170118054551.GA881@jagdpanzerIV.localdomain> (raw)
In-Reply-To: <20170116110012.GE20462@pathway.suse.cz>
On (01/16/17 12:00), Petr Mladek wrote:
[..]
> > Makes perfect sense to me. The only thing that worries me is that it
> > does change the logic slightly, and I'm not sure if this will have any
> > ramifications with it. That is, console_unlock() use to always leave
> > with console_may_schedule equal to zero, where console_unlock() clears
> > it. With this change, console_unlock() no longer clears that variable.
> > Will that have any side effects that we are unaware of?
>
> Good question!
it does look a bit worrisome.
> If I get it correctly, the variable should never be used without the
> console semaphore. IMHO, if it was used without the semaphore or if
> it was not set correctly when the semaphore was taken, it would be a
> bug. It means that leaving the variable set might actually help
> to find a buggy usage if there is any.
>
> My findings:
>
> + console_may_lock is set only by functions that get the console
> semaphore.
>
> + The function that takes the semaphore and does not set the
> variable is resume_console(). IMHO, it is a bug.
>
> We are on the safe side because the function is called from
> the same context as suspend_console() and it allows rescheduling.
>
>
> + I am not aware of any use of the variable without the
> semaphore. But it is not easy to prove just be reading
> the code.
there is a function that clears @console_may_schedule out of
console_sem scope - console_flush_on_panic().
so I *may be* can think about a worst case scenario of race
condition between
console_flush_on_panic()->console_may_schedule = 0 on panic CPU
and
console_unlock()->console_may_schedule = 1 from CPU that panic CPU
failed to stop (smp_send_stop() can return with secondary CPUs still being
online).
thoughts?
-ss
next prev parent reply other threads:[~2017-01-18 5:45 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-13 13:15 [PATCH] printk: Correctly handle preemption in console_unlock() Petr Mladek
2017-01-13 16:05 ` Steven Rostedt
2017-01-16 11:00 ` Petr Mladek
2017-01-18 5:45 ` Sergey Senozhatsky [this message]
2017-01-18 7:21 ` Sergey Senozhatsky
2017-01-25 12:34 ` Petr Mladek
2017-01-14 6:28 ` Sergey Senozhatsky
2017-01-16 11:38 ` Petr Mladek
2017-01-16 11:58 ` Sergey Senozhatsky
2017-01-16 12:48 ` Petr Mladek
2017-01-16 13:26 ` Sergey Senozhatsky
2017-01-16 13:43 ` Sergey Senozhatsky
2017-01-16 14:14 ` Petr Mladek
2017-01-16 15:19 ` Sergey Senozhatsky
2017-01-16 15:43 ` Sergey Senozhatsky
2017-01-16 16:35 ` Petr Mladek
2017-01-16 13:41 ` Tetsuo Handa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170118054551.GA881@jagdpanzerIV.localdomain \
--to=sergey.senozhatsky.work@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=gregkh@linuxfoundation.org \
--cc=jslaby@suse.cz \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=sergey.senozhatsky@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).