From: Simon Horman <horms@kernel.org>
To: Nikolay Aleksandrov <razor@blackwall.org>
Cc: netdev@vger.kernel.org, tobias@waldekranz.com, kuba@kernel.org,
roopa@nvidia.com, bridge@lists.linux.dev, edumazet@google.com,
pabeni@redhat.com,
syzbot+fa04eb8a56fd923fc5d8@syzkaller.appspotmail.com
Subject: Re: [PATCH net] net: bridge: mst: fix vlan use-after-free
Date: Tue, 14 May 2024 11:04:29 +0100 [thread overview]
Message-ID: <20240514100429.GB2787@kernel.org> (raw)
In-Reply-To: <20240513110627.770389-1-razor@blackwall.org>
On Mon, May 13, 2024 at 02:06:27PM +0300, Nikolay Aleksandrov wrote:
> syzbot reported a suspicious rcu usage[1] in bridge's mst code. While
> fixing it I noticed that nothing prevents a vlan to be freed while
> walking the list from the same path (br forward delay timer). Fix the rcu
> usage and also make sure we are not accessing freed memory by making
> br_mst_vlan_set_state use rcu read lock.
>
> [1]
> WARNING: suspicious RCU usage
> 6.9.0-rc6-syzkaller #0 Not tainted
> -----------------------------
> net/bridge/br_private.h:1599 suspicious rcu_dereference_protected() usage!
> ...
> stack backtrace:
> CPU: 1 PID: 8017 Comm: syz-executor.1 Not tainted 6.9.0-rc6-syzkaller #0
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
> Call Trace:
> <IRQ>
> __dump_stack lib/dump_stack.c:88 [inline]
> dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
> lockdep_rcu_suspicious+0x221/0x340 kernel/locking/lockdep.c:6712
> nbp_vlan_group net/bridge/br_private.h:1599 [inline]
> br_mst_set_state+0x1ea/0x650 net/bridge/br_mst.c:105
> br_set_state+0x28a/0x7b0 net/bridge/br_stp.c:47
> br_forward_delay_timer_expired+0x176/0x440 net/bridge/br_stp_timer.c:88
> call_timer_fn+0x18e/0x650 kernel/time/timer.c:1793
> expire_timers kernel/time/timer.c:1844 [inline]
> __run_timers kernel/time/timer.c:2418 [inline]
> __run_timer_base+0x66a/0x8e0 kernel/time/timer.c:2429
> run_timer_base kernel/time/timer.c:2438 [inline]
> run_timer_softirq+0xb7/0x170 kernel/time/timer.c:2448
> __do_softirq+0x2c6/0x980 kernel/softirq.c:554
> invoke_softirq kernel/softirq.c:428 [inline]
> __irq_exit_rcu+0xf2/0x1c0 kernel/softirq.c:633
> irq_exit_rcu+0x9/0x30 kernel/softirq.c:645
> instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline]
> sysvec_apic_timer_interrupt+0xa6/0xc0 arch/x86/kernel/apic/apic.c:1043
> </IRQ>
> <TASK>
> asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
> RIP: 0010:lock_acquire+0x264/0x550 kernel/locking/lockdep.c:5758
> Code: 2b 00 74 08 4c 89 f7 e8 ba d1 84 00 f6 44 24 61 02 0f 85 85 01 00 00 41 f7 c7 00 02 00 00 74 01 fb 48 c7 44 24 40 0e 36 e0 45 <4b> c7 44 25 00 00 00 00 00 43 c7 44 25 09 00 00 00 00 43 c7 44 25
> RSP: 0018:ffffc90013657100 EFLAGS: 00000206
> RAX: 0000000000000001 RBX: 1ffff920026cae2c RCX: 0000000000000001
> RDX: dffffc0000000000 RSI: ffffffff8bcaca00 RDI: ffffffff8c1eaa60
> RBP: ffffc90013657260 R08: ffffffff92efe507 R09: 1ffffffff25dfca0
> R10: dffffc0000000000 R11: fffffbfff25dfca1 R12: 1ffff920026cae28
> R13: dffffc0000000000 R14: ffffc90013657160 R15: 0000000000000246
>
> Fixes: ec7328b59176 ("net: bridge: mst: Multiple Spanning Tree (MST) mode")
> Reported-by: syzbot+fa04eb8a56fd923fc5d8@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=fa04eb8a56fd923fc5d8
> Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>
Reviewed-by: Simon Horman <horms@kernel.org>
next prev parent reply other threads:[~2024-05-14 10:06 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-13 11:06 [PATCH net] net: bridge: mst: fix vlan use-after-free Nikolay Aleksandrov
2024-05-14 10:04 ` Simon Horman [this message]
2024-05-15 10:50 ` patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240514100429.GB2787@kernel.org \
--to=horms@kernel.org \
--cc=bridge@lists.linux.dev \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=razor@blackwall.org \
--cc=roopa@nvidia.com \
--cc=syzbot+fa04eb8a56fd923fc5d8@syzkaller.appspotmail.com \
--cc=tobias@waldekranz.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.