mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
net: bridge: vlan: annotate lockless use of msti
Annotate data races around vlan msti field, it can be read lockless. Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Link: https://patch.msgid.link/20260903143138.1574598-8-razor@blackwall.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
5bec8f8611
commit
120207a08f
|
|
@ -123,7 +123,7 @@ int br_mst_set_state(struct net_bridge_port *p, u16 msti, u8 state,
|
||||||
|
|
||||||
err = 0;
|
err = 0;
|
||||||
list_for_each_entry_rcu(v, &vg->vlan_list, vlist) {
|
list_for_each_entry_rcu(v, &vg->vlan_list, vlist) {
|
||||||
if (v->brvlan->msti != msti)
|
if (READ_ONCE(v->brvlan->msti) != msti)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
br_mst_vlan_set_state(vg, v, state);
|
br_mst_vlan_set_state(vg, v, state);
|
||||||
|
|
@ -176,7 +176,7 @@ int br_mst_vlan_set_msti(struct net_bridge_vlan *mv, u16 msti)
|
||||||
if (err && err != -EOPNOTSUPP)
|
if (err && err != -EOPNOTSUPP)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
mv->msti = msti;
|
WRITE_ONCE(mv->msti, msti);
|
||||||
|
|
||||||
list_for_each_entry(p, &mv->br->port_list, list) {
|
list_for_each_entry(p, &mv->br->port_list, list) {
|
||||||
vg = nbp_vlan_group(p);
|
vg = nbp_vlan_group(p);
|
||||||
|
|
@ -249,7 +249,9 @@ size_t br_mst_info_size(const struct net_bridge_vlan_group *vg)
|
||||||
sz = nla_total_size(0);
|
sz = nla_total_size(0);
|
||||||
|
|
||||||
list_for_each_entry_rcu(v, &vg->vlan_list, vlist) {
|
list_for_each_entry_rcu(v, &vg->vlan_list, vlist) {
|
||||||
if (test_bit(v->brvlan->msti, seen))
|
u16 msti = READ_ONCE(v->brvlan->msti);
|
||||||
|
|
||||||
|
if (test_bit(msti, seen))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* IFLA_BRIDGE_MST_ENTRY */
|
/* IFLA_BRIDGE_MST_ENTRY */
|
||||||
|
|
@ -259,7 +261,7 @@ size_t br_mst_info_size(const struct net_bridge_vlan_group *vg)
|
||||||
/* IFLA_BRIDGE_MST_ENTRY_STATE */
|
/* IFLA_BRIDGE_MST_ENTRY_STATE */
|
||||||
nla_total_size(sizeof(u8));
|
nla_total_size(sizeof(u8));
|
||||||
|
|
||||||
__set_bit(v->brvlan->msti, seen);
|
__set_bit(msti, seen);
|
||||||
}
|
}
|
||||||
|
|
||||||
return sz;
|
return sz;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user