[v6.1] WARNING: suspicious RCU usage in br_mst_set_state

1 view
Skip to first unread message

syzbot

unread,
May 8, 2024, 11:44:24 PMMay 8
to syzkaller...@googlegroups.com
Hello,

syzbot found the following issue on:

HEAD commit: 909ba1f1b414 Linux 6.1.90
git tree: linux-6.1.y
console output: https://syzkaller.appspot.com/x/log.txt?x=11e101b8980000
kernel config: https://syzkaller.appspot.com/x/.config?x=660c4d17e3d2ceeb
dashboard link: https://syzkaller.appspot.com/bug?extid=26640ee721bcfd27ae8d
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
userspace arch: arm64

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/5a4f1efb0858/disk-909ba1f1.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/5f7faf626bf2/vmlinux-909ba1f1.xz
kernel image: https://storage.googleapis.com/syzbot-assets/9d7a2826732f/Image-909ba1f1.gz.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+26640e...@syzkaller.appspotmail.com

=============================
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


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzk...@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup
Reply all
Reply to author
Forward
0 new messages