syzbot


WARNING: suspicious RCU usage in br_mst_set_state

Status: upstream: reported on 2024/05/09 03:44
Reported-by: syzbot+26640ee721bcfd27ae8d@syzkaller.appspotmail.com
First crash: 46d, last: 46d
Similar bugs (2)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream WARNING: suspicious RCU usage in br_mst_set_state bridge 45 19d 53d 26/27 fixed on 2024/06/05 13:52
upstream WARNING: suspicious RCU usage in br_mst_set_state (2) net 10 4d22h 16d 25/27 upstream: reported on 2024/06/08 17:29

Sample crash report:
=============================
WARNING: suspicious RCU usage
6.1.90-syzkaller #0 Not tainted
-----------------------------
net/bridge/br_private.h:1499 suspicious rcu_dereference_protected() usage!

other info that might help us debug this:


rcu_scheduler_active = 2, debug_locks = 1
7 locks held by syz-executor.0/4246:
 #0: ffff0000d668c348 (&mm->mmap_lock){++++}-{3:3}, at: mmap_write_lock_killable include/linux/mmap_lock.h:87 [inline]
 #0: ffff0000d668c348 (&mm->mmap_lock){++++}-{3:3}, at: dup_mmap kernel/fork.c:593 [inline]
 #0: ffff0000d668c348 (&mm->mmap_lock){++++}-{3:3}, at: dup_mm kernel/fork.c:1540 [inline]
 #0: ffff0000d668c348 (&mm->mmap_lock){++++}-{3:3}, at: copy_mm+0x314/0x13f0 kernel/fork.c:1589
 #1: ffff0000c6c00d48 (&mm->mmap_lock/1){+.+.}-{3:3}, at: mmap_write_lock_nested include/linux/mmap_lock.h:78 [inline]
 #1: ffff0000c6c00d48 (&mm->mmap_lock/1){+.+.}-{3:3}, at: dup_mmap kernel/fork.c:602 [inline]
 #1: ffff0000c6c00d48 (&mm->mmap_lock/1){+.+.}-{3:3}, at: dup_mm kernel/fork.c:1540 [inline]
 #1: ffff0000c6c00d48 (&mm->mmap_lock/1){+.+.}-{3:3}, at: copy_mm+0x3cc/0x13f0 kernel/fork.c:1589
 #2: ffff0000d2582138 (ptlock_ptr(page)#2){+.+.}-{2:2}, at: spin_lock include/linux/spinlock.h:351 [inline]
 #2: ffff0000d2582138 (ptlock_ptr(page)#2){+.+.}-{2:2}, at: copy_pte_range mm/memory.c:1042 [inline]
 #2: ffff0000d2582138 (ptlock_ptr(page)#2){+.+.}-{2:2}, at: copy_pmd_range mm/memory.c:1177 [inline]
 #2: ffff0000d2582138 (ptlock_ptr(page)#2){+.+.}-{2:2}, at: copy_pud_range mm/memory.c:1214 [inline]
 #2: ffff0000d2582138 (ptlock_ptr(page)#2){+.+.}-{2:2}, at: copy_p4d_range mm/memory.c:1238 [inline]
 #2: ffff0000d2582138 (ptlock_ptr(page)#2){+.+.}-{2:2}, at: copy_page_range+0xac0/0x38d0 mm/memory.c:1336
 #3: ffff0000cf864738 (ptlock_ptr(page)#2/1){+.+.}-{2:2}, at: copy_pte_range mm/memory.c:1049 [inline]
 #3: ffff0000cf864738 (ptlock_ptr(page)#2/1){+.+.}-{2:2}, at: copy_pmd_range mm/memory.c:1177 [inline]
 #3: ffff0000cf864738 (ptlock_ptr(page)#2/1){+.+.}-{2:2}, at: copy_pud_range mm/memory.c:1214 [inline]
 #3: ffff0000cf864738 (ptlock_ptr(page)#2/1){+.+.}-{2:2}, at: copy_p4d_range mm/memory.c:1238 [inline]
 #3: ffff0000cf864738 (ptlock_ptr(page)#2/1){+.+.}-{2:2}, at: copy_page_range+0xb70/0x38d0 mm/memory.c:1336
 #4: ffff800015a14ca0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x18/0x54 include/linux/rcupdate.h:349
 #5: ffff800008017c80 ((&p->forward_delay_timer)){+.-.}-{0:0}, at: lockdep_copy_map include/linux/lockdep.h:41 [inline]
 #5: ffff800008017c80 ((&p->forward_delay_timer)){+.-.}-{0:0}, at: call_timer_fn+0xd0/0xa1c kernel/time/timer.c:1494
 #6: ffff0000f2e28c98 (&br->lock){+.-.}-{2:2}, at: spin_lock include/linux/spinlock.h:351 [inline]
 #6: ffff0000f2e28c98 (&br->lock){+.-.}-{2:2}, at: br_forward_delay_timer_expired+0x58/0x404 net/bridge/br_stp_timer.c:86

stack backtrace:
CPU: 1 PID: 4246 Comm: syz-executor.0 Not tainted 6.1.90-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
Call trace:
 dump_backtrace+0x1c8/0x1f4 arch/arm64/kernel/stacktrace.c:158
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:165
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x108/0x170 lib/dump_stack.c:106
 dump_stack+0x1c/0x58 lib/dump_stack.c:113
 lockdep_rcu_suspicious+0x260/0x464 kernel/locking/lockdep.c:6592
 nbp_vlan_group net/bridge/br_private.h:1499 [inline]
 br_mst_set_state+0x1b8/0x5b0 net/bridge/br_mst.c:105
 br_set_state+0x21c/0x670 net/bridge/br_stp.c:47
 br_forward_delay_timer_expired+0x164/0x404 net/bridge/br_stp_timer.c:88
 call_timer_fn+0x1c0/0xa1c kernel/time/timer.c:1504
 expire_timers kernel/time/timer.c:1549 [inline]
 __run_timers+0x554/0x718 kernel/time/timer.c:1820
 run_timer_softirq+0x7c/0x114 kernel/time/timer.c:1833
 __do_softirq+0x314/0xe38 kernel/softirq.c:571
 ____do_softirq+0x14/0x20 arch/arm64/kernel/irq.c:80
 call_on_irq_stack+0x24/0x4c arch/arm64/kernel/entry.S:893
 do_softirq_own_stack+0x20/0x2c arch/arm64/kernel/irq.c:85
 invoke_softirq kernel/softirq.c:452 [inline]
 __irq_exit_rcu+0x264/0x4d4 kernel/softirq.c:650
 irq_exit_rcu+0x14/0x84 kernel/softirq.c:662
 __el1_irq arch/arm64/kernel/entry-common.c:472 [inline]
 el1_interrupt+0x38/0x68 arch/arm64/kernel/entry-common.c:486
 el1h_64_irq_handler+0x18/0x24 arch/arm64/kernel/entry-common.c:491
 el1h_64_irq+0x64/0x68 arch/arm64/kernel/entry.S:581
 arch_local_irq_restore arch/arm64/include/asm/irqflags.h:122 [inline]
 lock_acquire+0x2ac/0x7cc kernel/locking/lockdep.c:5665
 rcu_lock_acquire+0x44/0x54 include/linux/rcupdate.h:350
 rcu_read_lock include/linux/rcupdate.h:791 [inline]
 page_ext_get+0x2c/0x2d0 mm/page_ext.c:157
 page_table_check_set+0x9c/0x47c mm/page_table_check.c:109
 __page_table_check_pte_set+0x110/0x134 mm/page_table_check.c:199
 page_table_check_pte_set include/linux/page_table_check.h:83 [inline]
 set_pte_at arch/arm64/include/asm/pgtable.h:357 [inline]
 copy_present_pte mm/memory.c:1000 [inline]
 copy_pte_range mm/memory.c:1091 [inline]
 copy_pmd_range mm/memory.c:1177 [inline]
 copy_pud_range mm/memory.c:1214 [inline]
 copy_p4d_range mm/memory.c:1238 [inline]
 copy_page_range+0x28b0/0x38d0 mm/memory.c:1336
 dup_mmap kernel/fork.c:699 [inline]
 dup_mm kernel/fork.c:1540 [inline]
 copy_mm+0xc2c/0x13f0 kernel/fork.c:1589
 copy_process+0x1798/0x38d0 kernel/fork.c:2267
 kernel_clone+0x1d8/0x98c kernel/fork.c:2682
 __do_sys_clone kernel/fork.c:2823 [inline]
 __se_sys_clone kernel/fork.c:2791 [inline]
 __arm64_sys_clone+0x1e0/0x234 kernel/fork.c:2791
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x2c0 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x138/0x258 arch/arm64/kernel/syscall.c:142
 do_el0_svc+0x64/0x218 arch/arm64/kernel/syscall.c:206
 el0_svc+0x58/0x168 arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585
bridge0: port 1(bridge_slave_0) entered learning state
bridge0: port 2(bridge_slave_1) entered learning state

Crashes (1):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/05/09 03:43 linux-6.1.y 909ba1f1b414 20bf80e1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 WARNING: suspicious RCU usage in br_mst_set_state
* Struck through repros no longer work on HEAD.