2022-01-04 11:49:06

by kvartet

[permalink] [raw]
Subject: INFO: rcu detected stall in batadv_purge_orig

Hello,

When using Syzkaller to fuzz the latest Linux kernel, the following
crash was triggered.

HEAD commit: a7904a538933 Linux 5.16-rc6
git tree: upstream
console output: https://paste.ubuntu.com/p/V4fvMdr76R/plain/
kernel config: https://paste.ubuntu.com/p/FDDNHDxtwz/plain/

Sorry, I don't have a reproducer for this crash, hope the symbolized
report can help.

If you fix this issue, please add the following tag to the commit:
Reported-by: Yiru Xu <[email protected]>


rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
(detected by 1, t=10502 jiffies, g=150425, q=70254)
rcu: All QSes seen, last rcu_preempt kthread activity 10500
(4295046532-4295036032), jiffies_till_next_fqs=1, root ->qsmask 0x0
rcu: rcu_preempt kthread timer wakeup didn't happen for 10499 jiffies!
g150425 f0x2 RCU_GP_WAIT_FQS(5) ->state=0x200
rcu: Possible timer handling issue on cpu=3 timer-softirq=70438
rcu: rcu_preempt kthread starved for 10500 jiffies! g150425 f0x2
RCU_GP_WAIT_FQS(5) ->state=0x200 ->cpu=3
rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now
expected behavior.
rcu: RCU grace-period kthread stack dump:
task:rcu_preempt state:R stack:28416 pid: 16 ppid: 2 flags:0x00004000
Call Trace:
<TASK>
context_switch kernel/sched/core.c:4972 [inline]
__schedule+0xcd9/0x2530 kernel/sched/core.c:6253
schedule+0xd2/0x260 kernel/sched/core.c:6326
schedule_timeout+0x4ce/0x890 kernel/time/timer.c:1881
rcu_gp_fqs_loop+0x4a1/0x860 kernel/rcu/tree.c:1955
rcu_gp_kthread+0x1de/0x320 kernel/rcu/tree.c:2128
kthread+0x405/0x4f0 kernel/kthread.c:327
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295
</TASK>
rcu: Stack dump where RCU GP kthread last ran:
Sending NMI from CPU 1 to CPUs 3:
NMI backtrace for cpu 3
CPU: 3 PID: 8 Comm: kworker/u8:0 Not tainted 5.16.0-rc6 #9
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.13.0-1ubuntu1.1 04/01/2014
Workqueue: bat_events batadv_purge_orig
RIP: 0010:kvm_wait+0xb3/0x110 arch/x86/kernel/kvm.c:1001
Code: 40 38 c6 74 1b 48 83 c4 10 c3 c3 e8 f7 f4 49 00 eb 07 0f 00 2d
be 8a 75 08 fb f4 48 83 c4 10 c3 eb 07 0f 00 2d ae 8a 75 08 f4 <48> 83
c4 10 c3 89 74 24 0c 48 89 3c 24 e8 1b f3 49 00 8b 74 24 0c
RSP: 0018:ffffc900008a0b58 EFLAGS: 00000046
RAX: 0000000000000003 RBX: 0000000000000000 RCX: ffffffff815cf9a9
RDX: 0000000000000000 RSI: 0000000000000003 RDI: ffff888018e80338
RBP: ffff888018e80338 R08: 0000000000000004 R09: ffffed10031d0068
R10: ffff888018e80338 R11: ffffed10031d0067 R12: 0000000000000000
R13: ffffed10031d0067 R14: 0000000000000001 R15: ffff888135d3a880
FS: 0000000000000000(0000) GS:ffff888135d00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000c00062055c CR3: 0000000017e2c000 CR4: 0000000000350ee0
Call Trace:
<IRQ>
pv_wait arch/x86/include/asm/paravirt.h:603 [inline]
pv_wait_head_or_lock kernel/locking/qspinlock_paravirt.h:470 [inline]
__pv_queued_spin_lock_slowpath+0x923/0xb80 kernel/locking/qspinlock.c:508
pv_queued_spin_lock_slowpath arch/x86/include/asm/paravirt.h:591 [inline]
queued_spin_lock_slowpath arch/x86/include/asm/qspinlock.h:51 [inline]
queued_spin_lock include/asm-generic/qspinlock.h:85 [inline]
do_raw_spin_lock+0x204/0x2d0 kernel/locking/spinlock_debug.c:115
spin_lock include/linux/spinlock.h:349 [inline]
drm_handle_vblank+0x126/0xc70 drivers/gpu/drm/drm_vblank.c:1951
vkms_vblank_simulate+0xd0/0x3c0 drivers/gpu/drm/vkms/vkms_crtc.c:29
__run_hrtimer kernel/time/hrtimer.c:1685 [inline]
__hrtimer_run_queues+0x1b8/0xdf0 kernel/time/hrtimer.c:1749
hrtimer_interrupt+0x31c/0x790 kernel/time/hrtimer.c:1811
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1086 [inline]
__sysvec_apic_timer_interrupt+0x146/0x540 arch/x86/kernel/apic/apic.c:1103
sysvec_apic_timer_interrupt+0x8e/0xc0 arch/x86/kernel/apic/apic.c:1097
</IRQ>
<TASK>
asm_sysvec_apic_timer_interrupt+0x12/0x20 arch/x86/include/asm/idtentry.h:638
RIP: 0010:__local_bh_enable_ip+0xa8/0x110 kernel/softirq.c:390
Code: 1d 2d 86 bb 7e 65 8b 05 26 86 bb 7e a9 00 ff ff 00 74 45 bf 01
00 00 00 e8 95 54 09 00 e8 e0 96 36 00 fb 65 8b 05 08 86 bb 7e <85> c0
74 4a 5b 5d c3 65 8b 05 56 8d bb 7e 85 c0 75 a2 0f 0b eb 9e
RSP: 0018:ffffc900006b7c00 EFLAGS: 00000206
RAX: 0000000080000000 RBX: 00000000fffffe00 RCX: 1ffffffff1ff8f0e
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
RBP: ffffffff88e0aba3 R08: 0000000000000001 R09: fffffbfff1fee145
R10: 0000000000000001 R11: fffffbfff1fee144 R12: ffff888024e64ac8
R13: ffff8880183d4dd0 R14: 0000000000000159 R15: ffff888010c71800
spin_unlock_bh include/linux/spinlock.h:394 [inline]
batadv_purge_orig_ref+0xe43/0x1500 net/batman-adv/originator.c:1259
batadv_purge_orig+0x17/0x60 net/batman-adv/originator.c:1272
process_one_work+0x9df/0x16d0 kernel/workqueue.c:2298
worker_thread+0x90/0xed0 kernel/workqueue.c:2445
kthread+0x405/0x4f0 kernel/kthread.c:327
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295
</TASK>
----------------
Code disassembly (best guess):
0: 40 38 c6 cmp %al,%sil
3: 74 1b je 0x20
5: 48 83 c4 10 add $0x10,%rsp
9: c3 retq
a: c3 retq
b: e8 f7 f4 49 00 callq 0x49f507
10: eb 07 jmp 0x19
12: 0f 00 2d be 8a 75 08 verw 0x8758abe(%rip) # 0x8758ad7
19: fb sti
1a: f4 hlt
1b: 48 83 c4 10 add $0x10,%rsp
1f: c3 retq
20: eb 07 jmp 0x29
22: 0f 00 2d ae 8a 75 08 verw 0x8758aae(%rip) # 0x8758ad7
29: f4 hlt
* 2a: 48 83 c4 10 add $0x10,%rsp <-- trapping instruction
2e: c3 retq
2f: 89 74 24 0c mov %esi,0xc(%rsp)
33: 48 89 3c 24 mov %rdi,(%rsp)
37: e8 1b f3 49 00 callq 0x49f357
3c: 8b 74 24 0c mov 0xc(%rsp),%esi



Best Regards,
Yiru