lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 13 May 2016 22:18:47 +0900 From: Sergey Senozhatsky <sergey.senozhatsky@...il.com> To: Andrew Morton <akpm@...ux-foundation.org> Cc: Jan Kara <jack@...e.com>, Petr Mladek <pmladek@...e.com>, Tejun Heo <tj@...nel.org>, Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp>, linux-kernel@...r.kernel.org, Byungchul Park <byungchul.park@....com>, Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>, Sergey Senozhatsky <sergey.senozhatsky@...il.com>, Jan Kara <jack@...e.cz> Subject: [PATCH v12 2/3] printk: Make wake_up_klogd_work_func() async From: Jan Kara <jack@...e.cz> Offload printing of scheduler deferred messages from IRQ context to a schedulable printing kthread, when possible (the same way we do it in vprintk_emit()). Otherwise, the CPU can spend unbounded amount of time doing printing in console_unlock() from IRQ. Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@...il.com> Signed-off-by: Jan Kara <jack@...e.cz> Reviewed-by: Petr Mladek <pmladek@...e.com> --- kernel/printk/printk.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index c0e49ff..0fb0c04 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2881,9 +2881,16 @@ static void wake_up_klogd_work_func(struct irq_work *irq_work) int pending = __this_cpu_xchg(printk_pending, 0); if (pending & PRINTK_PENDING_OUTPUT) { - /* If trylock fails, someone else is doing the printing */ - if (console_trylock()) - console_unlock(); + if (printk_kthread) { + wake_up_process(printk_kthread); + } else { + /* + * If trylock fails, someone else is doing + * the printing + */ + if (console_trylock()) + console_unlock(); + } } if (pending & PRINTK_PENDING_WAKEUP) -- 2.8.2.372.g63a3502
Powered by blists - more mailing lists