Commit c4f050c
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: 47e91f5 ("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>1 parent 4ca0129 commit c4f050c
6 files changed
Lines changed: 89 additions & 66 deletions
File tree
- drivers/net/bonding
- include/net
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1029 | 1029 | | |
1030 | 1030 | | |
1031 | 1031 | | |
| 1032 | + | |
1032 | 1033 | | |
1033 | 1034 | | |
1034 | 1035 | | |
1035 | 1036 | | |
1036 | 1037 | | |
1037 | 1038 | | |
1038 | 1039 | | |
| 1040 | + | |
1039 | 1041 | | |
1040 | 1042 | | |
1041 | 1043 | | |
| |||
1055 | 1057 | | |
1056 | 1058 | | |
1057 | 1059 | | |
1058 | | - | |
| 1060 | + | |
1059 | 1061 | | |
1060 | 1062 | | |
1061 | 1063 | | |
| |||
1070 | 1072 | | |
1071 | 1073 | | |
1072 | 1074 | | |
1073 | | - | |
| 1075 | + | |
1074 | 1076 | | |
1075 | 1077 | | |
1076 | 1078 | | |
| |||
1086 | 1088 | | |
1087 | 1089 | | |
1088 | 1090 | | |
1089 | | - | |
| 1091 | + | |
1090 | 1092 | | |
1091 | 1093 | | |
1092 | 1094 | | |
| |||
1102 | 1104 | | |
1103 | 1105 | | |
1104 | 1106 | | |
1105 | | - | |
| 1107 | + | |
1106 | 1108 | | |
1107 | | - | |
| 1109 | + | |
1108 | 1110 | | |
1109 | 1111 | | |
1110 | 1112 | | |
| |||
1115 | 1117 | | |
1116 | 1118 | | |
1117 | 1119 | | |
1118 | | - | |
| 1120 | + | |
1119 | 1121 | | |
1120 | 1122 | | |
1121 | 1123 | | |
| |||
1134 | 1136 | | |
1135 | 1137 | | |
1136 | 1138 | | |
1137 | | - | |
| 1139 | + | |
1138 | 1140 | | |
1139 | 1141 | | |
1140 | 1142 | | |
| |||
1154 | 1156 | | |
1155 | 1157 | | |
1156 | 1158 | | |
1157 | | - | |
1158 | | - | |
| 1159 | + | |
| 1160 | + | |
1159 | 1161 | | |
1160 | 1162 | | |
1161 | 1163 | | |
| |||
1187 | 1189 | | |
1188 | 1190 | | |
1189 | 1191 | | |
1190 | | - | |
| 1192 | + | |
1191 | 1193 | | |
1192 | 1194 | | |
1193 | 1195 | | |
| |||
1561 | 1563 | | |
1562 | 1564 | | |
1563 | 1565 | | |
1564 | | - | |
| 1566 | + | |
| 1567 | + | |
1565 | 1568 | | |
1566 | | - | |
1567 | 1569 | | |
1568 | 1570 | | |
1569 | 1571 | | |
| |||
1586 | 1588 | | |
1587 | 1589 | | |
1588 | 1590 | | |
1589 | | - | |
| 1591 | + | |
1590 | 1592 | | |
1591 | 1593 | | |
1592 | 1594 | | |
| |||
1609 | 1611 | | |
1610 | 1612 | | |
1611 | 1613 | | |
1612 | | - | |
| 1614 | + | |
1613 | 1615 | | |
1614 | 1616 | | |
1615 | 1617 | | |
| |||
1633 | 1635 | | |
1634 | 1636 | | |
1635 | 1637 | | |
1636 | | - | |
| 1638 | + | |
1637 | 1639 | | |
1638 | | - | |
| 1640 | + | |
1639 | 1641 | | |
1640 | | - | |
| 1642 | + | |
1641 | 1643 | | |
1642 | 1644 | | |
1643 | 1645 | | |
1644 | | - | |
| 1646 | + | |
1645 | 1647 | | |
1646 | 1648 | | |
1647 | 1649 | | |
| |||
1656 | 1658 | | |
1657 | 1659 | | |
1658 | 1660 | | |
1659 | | - | |
1660 | 1661 | | |
1661 | | - | |
| 1662 | + | |
1662 | 1663 | | |
1663 | 1664 | | |
1664 | 1665 | | |
1665 | 1666 | | |
1666 | 1667 | | |
1667 | 1668 | | |
1668 | | - | |
| 1669 | + | |
1669 | 1670 | | |
1670 | | - | |
| 1671 | + | |
1671 | 1672 | | |
1672 | | - | |
| 1673 | + | |
1673 | 1674 | | |
1674 | | - | |
| 1675 | + | |
1675 | 1676 | | |
1676 | | - | |
| 1677 | + | |
1677 | 1678 | | |
1678 | | - | |
| 1679 | + | |
1679 | 1680 | | |
1680 | | - | |
1681 | | - | |
1682 | | - | |
1683 | | - | |
1684 | | - | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
1685 | 1688 | | |
1686 | 1689 | | |
1687 | 1690 | | |
1688 | 1691 | | |
1689 | 1692 | | |
1690 | 1693 | | |
1691 | | - | |
| 1694 | + | |
1692 | 1695 | | |
1693 | 1696 | | |
1694 | 1697 | | |
| |||
1700 | 1703 | | |
1701 | 1704 | | |
1702 | 1705 | | |
1703 | | - | |
1704 | | - | |
| 1706 | + | |
| 1707 | + | |
1705 | 1708 | | |
1706 | | - | |
1707 | | - | |
| 1709 | + | |
1708 | 1710 | | |
1709 | | - | |
| 1711 | + | |
1710 | 1712 | | |
1711 | 1713 | | |
1712 | 1714 | | |
| |||
2075 | 2077 | | |
2076 | 2078 | | |
2077 | 2079 | | |
2078 | | - | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
2079 | 2083 | | |
2080 | 2084 | | |
2081 | 2085 | | |
2082 | 2086 | | |
2083 | 2087 | | |
2084 | | - | |
| 2088 | + | |
2085 | 2089 | | |
2086 | 2090 | | |
2087 | 2091 | | |
| |||
2093 | 2097 | | |
2094 | 2098 | | |
2095 | 2099 | | |
2096 | | - | |
| 2100 | + | |
| 2101 | + | |
| 2102 | + | |
2097 | 2103 | | |
2098 | 2104 | | |
2099 | 2105 | | |
2100 | | - | |
| 2106 | + | |
2101 | 2107 | | |
2102 | 2108 | | |
2103 | 2109 | | |
| |||
2114 | 2120 | | |
2115 | 2121 | | |
2116 | 2122 | | |
2117 | | - | |
| 2123 | + | |
| 2124 | + | |
| 2125 | + | |
2118 | 2126 | | |
2119 | 2127 | | |
2120 | 2128 | | |
2121 | | - | |
| 2129 | + | |
2122 | 2130 | | |
2123 | 2131 | | |
2124 | 2132 | | |
| |||
2135 | 2143 | | |
2136 | 2144 | | |
2137 | 2145 | | |
2138 | | - | |
| 2146 | + | |
| 2147 | + | |
| 2148 | + | |
2139 | 2149 | | |
2140 | 2150 | | |
2141 | 2151 | | |
2142 | | - | |
| 2152 | + | |
2143 | 2153 | | |
2144 | 2154 | | |
2145 | 2155 | | |
| |||
2379 | 2389 | | |
2380 | 2390 | | |
2381 | 2391 | | |
2382 | | - | |
| 2392 | + | |
2383 | 2393 | | |
2384 | 2394 | | |
2385 | 2395 | | |
| |||
2848 | 2858 | | |
2849 | 2859 | | |
2850 | 2860 | | |
2851 | | - | |
| 2861 | + | |
2852 | 2862 | | |
2853 | 2863 | | |
2854 | 2864 | | |
2855 | 2865 | | |
2856 | 2866 | | |
2857 | 2867 | | |
2858 | | - | |
2859 | | - | |
| 2868 | + | |
| 2869 | + | |
| 2870 | + | |
2860 | 2871 | | |
2861 | 2872 | | |
2862 | 2873 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1433 | 1433 | | |
1434 | 1434 | | |
1435 | 1435 | | |
1436 | | - | |
| 1436 | + | |
1437 | 1437 | | |
1438 | 1438 | | |
1439 | 1439 | | |
| |||
5179 | 5179 | | |
5180 | 5180 | | |
5181 | 5181 | | |
| 5182 | + | |
5182 | 5183 | | |
5183 | 5184 | | |
5184 | 5185 | | |
5185 | 5186 | | |
5186 | 5187 | | |
5187 | 5188 | | |
5188 | | - | |
| 5189 | + | |
5189 | 5190 | | |
5190 | | - | |
| 5191 | + | |
5191 | 5192 | | |
5192 | 5193 | | |
5193 | 5194 | | |
| |||
5199 | 5200 | | |
5200 | 5201 | | |
5201 | 5202 | | |
| 5203 | + | |
5202 | 5204 | | |
5203 | 5205 | | |
5204 | 5206 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
| 70 | + | |
70 | 71 | | |
71 | 72 | | |
72 | 73 | | |
73 | | - | |
| 74 | + | |
74 | 75 | | |
75 | 76 | | |
76 | 77 | | |
77 | | - | |
| 78 | + | |
78 | 79 | | |
79 | 80 | | |
80 | 81 | | |
81 | | - | |
| 82 | + | |
82 | 83 | | |
83 | 84 | | |
84 | 85 | | |
85 | | - | |
| 86 | + | |
86 | 87 | | |
87 | 88 | | |
88 | | - | |
| 89 | + | |
89 | 90 | | |
| 91 | + | |
90 | 92 | | |
91 | 93 | | |
92 | 94 | | |
| |||
95 | 97 | | |
96 | 98 | | |
97 | 99 | | |
| 100 | + | |
| 101 | + | |
98 | 102 | | |
99 | 103 | | |
100 | 104 | | |
| |||
0 commit comments