Eric Dumazet
c4f050ce06
bonding: 3ad: implement proper RCU rules for port->aggregator
syzbot found a data-race in bond_3ad_get_active_agg_info /
bond_3ad_state_machine_handler [1] which hints at lack of proper
RCU implementation.
Add __rcu qualifier to port->aggregator, and add proper RCU API.
[1]
BUG: KCSAN: data-race in bond_3ad_get_active_agg_info / bond_3ad_state_machine_handler
write to 0xffff88813cf5c4b0 of 8 bytes by task 36 on cpu 0:
ad_port_selection_logic drivers/net/bonding/bond_3ad.c:1659 [inline]
bond_3ad_state_machine_handler+0x9d5/0x2d60 drivers/net/bonding/bond_3ad.c:2569
process_one_work kernel/workqueue.c:3302 [inline]
process_scheduled_works+0x4f0/0x9c0 kernel/workqueue.c:3385
worker_thread+0x58a/0x780 kernel/workqueue.c:3466
kthread+0x22a/0x280 kernel/kthread.c:436
ret_from_fork+0x146/0x330 arch/x86/kernel/process.c:158
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
read to 0xffff88813cf5c4b0 of 8 bytes by task 22063 on cpu 1:
__bond_3ad_get_active_agg_info drivers/net/bonding/bond_3ad.c:2858 [inline]
bond_3ad_get_active_agg_info+0x8c/0x230 drivers/net/bonding/bond_3ad.c:2881
bond_fill_info+0xe0f/0x10f0 drivers/net/bonding/bond_netlink.c:853
rtnl_link_info_fill net/core/rtnetlink.c:906 [inline]
rtnl_link_fill+0x1d7/0x4e0 net/core/rtnetlink.c:927
rtnl_fill_ifinfo+0xf8e/0x1380 net/core/rtnetlink.c:2168
rtmsg_ifinfo_build_skb+0x11c/0x1b0 net/core/rtnetlink.c:4453
rtmsg_ifinfo_event net/core/rtnetlink.c:4486 [inline]
rtmsg_ifinfo+0x6d/0x110 net/core/rtnetlink.c:4495
__dev_notify_flags+0x76/0x390 net/core/dev.c:9790
netif_change_flags+0xac/0xd0 net/core/dev.c:9823
do_setlink+0x905/0x2950 net/core/rtnetlink.c:3180
rtnl_group_changelink net/core/rtnetlink.c:3813 [inline]
__rtnl_newlink net/core/rtnetlink.c:3981 [inline]
rtnl_newlink+0xf55/0x1400 net/core/rtnetlink.c:4109
rtnetlink_rcv_msg+0x64b/0x720 net/core/rtnetlink.c:6995
netlink_rcv_skb+0x123/0x220 net/netlink/af_netlink.c:2550
rtnetlink_rcv+0x1c/0x30 net/core/rtnetlink.c:7022
netlink_unicast_kernel net/netlink/af_netlink.c:1318 [inline]
netlink_unicast+0x5a8/0x680 net/netlink/af_netlink.c:1344
netlink_sendmsg+0x5c8/0x6f0 net/netlink/af_netlink.c:1894
sock_sendmsg_nosec net/socket.c:787 [inline]
__sock_sendmsg net/socket.c:802 [inline]
____sys_sendmsg+0x563/0x5b0 net/socket.c:2698
___sys_sendmsg+0x195/0x1e0 net/socket.c:2752
__sys_sendmsg net/socket.c:2784 [inline]
__do_sys_sendmsg net/socket.c:2789 [inline]
__se_sys_sendmsg net/socket.c:2787 [inline]
__x64_sys_sendmsg+0xd4/0x160 net/socket.c:2787
x64_sys_call+0x194c/0x3020 arch/x86/include/generated/asm/syscalls_64.h:47
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0x12c/0x3b0 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
value changed: 0x0000000000000000 -> 0xffff88813cf5c400
Reported by Kernel Concurrency Sanitizer on:
CPU: 1 UID: 0 PID: 22063 Comm: syz.0.31122 Tainted: G W syzkaller #0 PREEMPT(full)
Tainted: [W]=WARN
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/18/2026
Fixes: 47e91f5600 ("bonding: use RCU protection for 3ad xmit path")
Reported-by: syzbot+9bb2ff2a4ab9e17307e1@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/netdev/69f0a82f.050a0220.3aadc4.0000.GAE@google.com/
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Jay Vosburgh <jv@jvosburgh.net>
Cc: Andrew Lunn <andrew+netdev@lunn.ch>
Link: https://patch.msgid.link/20260428123207.3809211-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-04-29 18:32:02 -07:00
..
2026-04-16 02:57:01 +00:00
2026-04-13 09:19:42 -04:00
2026-02-21 01:02:28 -08:00
2026-03-05 08:02:05 -08:00
2026-04-20 11:20:35 -07:00
2026-04-21 12:48:44 +02:00
2026-04-02 11:03:13 -07:00
2026-01-28 19:32:26 -08:00
2026-04-09 18:21:46 -07:00
2024-10-24 16:03:40 +02:00
2026-01-12 19:29:11 -08:00
2025-11-07 18:53:57 -08:00
2025-11-14 18:00:34 -08:00
2026-03-05 07:54:08 -08:00
2026-02-27 19:06:21 -08:00
2026-02-17 17:12:06 -08:00
2025-04-24 17:03:45 -07:00
2025-07-08 18:05:25 -07:00
2026-03-12 10:59:36 +01:00
2025-07-02 14:22:02 -07:00
2026-04-23 10:24:02 -07:00
2026-04-29 18:32:02 -07:00
2024-08-26 09:37:22 -07:00
2025-09-09 10:56:02 +02:00
2026-04-08 19:07:08 -07:00
2025-02-27 14:03:14 +01:00
2024-10-02 17:23:23 -04:00
2026-02-05 11:58:39 +01:00
2026-03-25 20:56:55 +01:00
2025-05-30 19:53:51 -07:00
2024-10-02 17:23:23 -04:00
2025-09-14 11:55:04 -07:00
2026-04-08 19:18:52 -07:00
2026-04-08 19:55:38 -07:00
2026-04-08 19:19:18 -07:00
2026-02-28 15:31:35 -08:00
2026-02-28 15:31:34 -08:00
2026-04-06 18:30:33 -07:00
2024-08-26 09:37:23 -07:00
2025-09-14 14:28:12 -07:00
2024-05-29 17:34:49 -07:00
2026-02-02 17:49:29 -08:00
2024-11-13 18:49:50 -08:00
2024-08-26 09:37:23 -07:00
2024-10-11 15:35:05 -07:00
2025-04-15 17:54:56 -07:00
2024-07-15 09:14:39 -07:00
2026-02-10 15:30:11 +01:00
2025-08-26 17:34:31 -07:00
2026-02-21 17:09:51 -08:00
2025-09-03 15:16:49 -07:00
2026-01-21 19:28:32 -08:00
2026-03-04 16:54:09 -08:00
2024-08-26 09:37:23 -07:00
2025-09-11 12:22:38 +02:00
2025-10-30 08:38:51 +01:00
2026-02-24 17:47:27 -08:00
2026-03-05 18:50:05 -08:00
2026-03-02 18:17:17 -08:00
2026-02-26 10:23:00 -08:00
2025-08-26 17:34:31 -07:00
2026-02-03 15:13:24 +01:00
2025-12-10 01:15:27 -08:00
2026-03-26 12:09:57 -07:00
2026-02-02 17:49:30 -08:00
2025-09-23 10:12:15 +02:00
2024-12-17 19:37:00 -08:00
2026-02-13 12:24:05 -08:00
2026-02-24 16:30:40 -08:00
2026-03-29 11:21:24 -07:00
2026-03-29 11:21:23 -07:00
2026-03-14 08:38:06 -07:00
2026-03-03 17:20:37 -08:00
2026-04-03 15:52:10 -07:00
2026-03-04 11:45:45 +01:00
2026-03-29 11:21:22 -07:00
2025-03-21 17:36:49 +08:00
2025-12-10 01:15:27 -08:00
2026-03-29 11:21:24 -07:00
2024-10-09 08:53:01 +02:00
2025-08-13 18:18:33 -07:00
2026-02-02 17:09:11 -08:00
2024-12-06 17:43:08 -08:00
2024-07-15 08:51:01 -07:00
2024-08-26 09:37:23 -07:00
2024-07-15 08:51:19 -07:00
2025-07-02 14:32:30 -07:00
2026-04-07 15:36:03 +02:00
2024-10-02 17:23:23 -04:00
2025-01-20 12:20:42 +00:00
2026-04-20 11:46:57 -07:00
2024-11-09 09:04:54 -08:00
2025-04-15 08:21:46 -07:00
2026-03-29 11:21:24 -07:00
2024-11-09 13:22:57 -08:00
2025-10-24 17:57:20 -07:00
2024-11-30 13:41:50 -08:00
2026-04-09 14:36:52 +02:00
2024-10-10 08:30:22 -07:00
2025-05-22 09:42:41 -07:00
2025-03-12 13:32:35 -07:00
2026-04-09 18:21:46 -07:00
2026-04-09 18:26:28 -07:00
2024-11-21 08:28:08 -08:00
2026-04-12 11:23:50 -07:00
2026-04-29 16:40:08 -07:00
2025-04-24 09:29:56 +02:00
2025-10-20 17:13:40 -07:00
2025-06-13 18:17:08 -07:00
2026-04-22 21:12:47 -07:00
2026-03-02 18:17:17 -08:00
2025-11-24 18:53:14 -08:00
2026-02-05 09:32:45 -08:00
2025-10-16 12:04:47 -07:00
2024-07-11 18:11:31 -07:00
2025-09-18 12:32:06 +02:00
2025-09-14 11:35:17 -07:00
2024-08-26 09:37:23 -07:00
2024-08-26 09:37:23 -07:00
2026-02-05 09:23:06 -08:00
2026-04-23 10:24:02 -07:00
2025-08-29 19:36:32 -07:00
2026-03-04 16:54:09 -08:00
2026-03-04 16:54:10 -08:00
2025-04-11 18:58:10 -07:00
2025-02-21 15:28:03 -08:00
2026-04-14 12:04:00 -07:00
2026-01-13 11:54:29 +01:00
2025-07-04 09:32:35 +02:00
2026-03-04 17:44:35 -08:00
2025-08-26 18:11:29 -07:00
2024-06-24 16:41:23 -07:00
2024-05-30 18:29:38 -07:00
2025-11-06 13:38:11 +01:00
2025-11-10 11:19:41 -08:00
2025-09-08 18:06:21 -07:00
2024-08-02 17:16:59 -07:00
2026-04-14 18:36:10 -07:00
2026-04-23 15:57:10 -07:00
2025-05-05 16:48:12 -07:00
2026-03-19 13:14:00 +01:00
2026-03-09 19:31:41 -07:00
2025-09-11 19:05:56 -07:00
2026-04-18 11:10:12 -07:00
2026-04-18 11:10:12 -07:00
2025-07-11 11:00:57 -07:00
2025-08-25 17:53:35 -07:00
2025-10-31 06:46:03 -07:00
2026-03-13 18:57:44 -07:00
2026-04-12 10:54:31 -07:00
2026-03-29 11:21:24 -07:00
2026-03-13 18:57:46 -07:00
2025-11-04 19:10:32 -08:00
2025-06-17 18:18:46 -07:00
2025-07-14 17:19:13 -07:00
2026-04-06 18:43:51 -07:00
2026-04-06 18:43:51 -07:00
2025-09-24 10:22:37 -07:00
2026-02-10 20:21:48 -08:00
2026-03-16 19:28:21 -07:00