Messages in this thread | | | Date | Mon, 23 Apr 2018 12:32:32 +0200 | From | Petr Mladek <> | Subject | Re: [PATCH] printk: Ratelimit messages printed by console drivers |
| |
On Fri 2018-04-20 11:13:07, Steven Rostedt wrote: > On Fri, 20 Apr 2018 16:57:20 +0200 > Petr Mladek <pmladek@suse.com> wrote: > > > > No, call_console_drivers() is done with interrupts disabled: > > > > console_lock_spinning_enable(); > > > > stop_critical_timings(); /* don't trace print latency */ > > ----> call_console_drivers(ext_text, ext_len, text, len); > > start_critical_timings(); > > > > if (console_lock_spinning_disable_and_check()) { > > ----> printk_safe_exit_irqrestore(flags); > > goto out; > > } > > > > ----> printk_safe_exit_irqrestore(flags); > > > > They were called with interrupts disabled for ages, long before > > printk_safe. In fact, it was all the time in the git kernel history. > > > > Therefore only NMIs are in the game. And they should be solved > > by the above change. > > > > Really? > > > console_trylock_spinning(); /* console_owner now equals current */
No, console_trylock_spinning() does not modify console_owner. The handshake is done using console_waiter variable.
console_owner is really set only between:
console_lock_spinning_enable() console_lock_spinning_disable_and_check()
and this entire section is called with interrupts disabled.
Best Regards, Petr
| |