lkml.org 
[lkml]   [2018]   [Oct]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC][PATCHv2 1/4] panic: avoid deadlocks in re-entrant console drivers
On (10/23/18 21:04), Sergey Senozhatsky wrote:
>
> Seems that s390 is the only arch which defines its own bust_spinlocks().
> Not sure why... Just to play games with console_loglevel?
>
> ---
>
> void bust_spinlocks(int yes)
> {
> if (yes) {
> oops_in_progress = 1;
> } else {
> int loglevel_save = console_loglevel;
> console_unblank();
> oops_in_progress = 0;
> /*
> * OK, the message is on the console. Now we call printk()
> * without oops_in_progress set so that printk will give klogd
> * a poke. Hold onto your hats...
> */
> console_loglevel = 15;
> printk(" ");
> console_loglevel = loglevel_save;
> }
> }
>
> ---
>
> The "printk(" "); without oops_in_progress" part is a bit worrisome.
> This thing technically can deadlock. Unless s390 has no NMI panic().

And console_unblank() is not guaranteed to print anything (unlike
console_flush_on_panic(), but oops is not panic() yet, so we can't
replace it with flush_on_panic()) - console_sem can be locked, so
console_unblank() would do nothing.

That printk(" ") probably wants to be printk_deferred(" ").

-ss

\
 
 \ /
  Last update: 2018-10-23 14:13    [W:0.330 / U:0.072 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site