Re: [PATCH 3/3] lockdep: Use line-buffered printk() for lockdep messages.

From: Tetsuo Handa
Date: Fri Nov 02 2018 - 22:00:13 EST


On 2018/11/02 22:36, Peter Zijlstra wrote:
> On Fri, Nov 02, 2018 at 10:31:57PM +0900, Tetsuo Handa wrote:
>> syzbot is sometimes getting mixed output like below due to concurrent
>> printk(). Mitigate such output by using line-buffered printk() API.
>>
>> RCU used illegally from idle CPU!
>> rcu_scheduler_active = 2, debug_locks = 1
>> RSP: 0018:ffffffff88007bb8 EFLAGS: 00000286
>> RCU used illegally from extended quiescent state!
>> ORIG_RAX: ffffffffffffff13
>> 1 lock held by swapper/1/0:
>> RAX: dffffc0000000000 RBX: 1ffffffff1000f7b RCX: 0000000000000000
>> #0:
>> RDX: 1ffffffff10237b8 RSI: 0000000000000001 RDI: ffffffff8811bdc0
>> 000000004b34587c
>> RBP: ffffffff88007bb8 R08: ffffffff88075e00 R09: 0000000000000000
>> (
>> R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
>> rcu_read_lock
>> R13: ffffffff88007c78 R14: 0000000000000000 R15: 0000000000000000
>> ){....}
>> arch_safe_halt arch/x86/include/asm/paravirt.h:94 [inline]
>> default_idle+0xc2/0x410 arch/x86/kernel/process.c:498
>> , at: trace_call_bpf+0xf8/0x640 kernel/trace/bpf_trace.c:46
>
> WTH is that buffered aPI, and no, that breaks my earlyprintk stuff.
>

This API is nothing but a wrapper for reducing frequency of directly
calling printk() by using snprintf() if possible. Thus, whatever your
earlyprintk stuff is, this API should not affect it.