From: Vladimir Oltean Date: Wed, 5 Jan 2022 22:11:50 +0000 (+0200) Subject: net: dsa: warn about dsa_port and dsa_switch bit fields being non atomic X-Git-Tag: howlett/maple/20220722_2~1498^2~48 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=1b26d364e4e9bd6540a8e7bcaf50e7f35041feb5;p=users%2Fjedix%2Flinux-maple.git net: dsa: warn about dsa_port and dsa_switch bit fields being non atomic As discussed during review here: https://patchwork.kernel.org/project/netdevbpf/patch/20220105132141.2648876-3-vladimir.oltean@nxp.com/ we should inform developers about pitfalls of concurrent access to the boolean properties of dsa_switch and dsa_port, now that they've been converted to bit fields. No other measure than a comment needs to be taken, since the code paths that update these bit fields are not concurrent with each other. Suggested-by: Florian Fainelli Signed-off-by: Vladimir Oltean Signed-off-by: David S. Miller --- diff --git a/include/net/dsa.h b/include/net/dsa.h index 63c7f553f938..57b3e4e7413b 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -265,6 +265,10 @@ struct dsa_port { u8 stp_state; + /* Warning: the following bit fields are not atomic, and updating them + * can only be done from code paths where concurrency is not possible + * (probe time or under rtnl_lock). + */ u8 vlan_filtering:1; /* Managed by DSA on user ports and by drivers on CPU and DSA ports */ @@ -333,6 +337,10 @@ struct dsa_switch { struct dsa_switch_tree *dst; unsigned int index; + /* Warning: the following bit fields are not atomic, and updating them + * can only be done from code paths where concurrency is not possible + * (probe time or under rtnl_lock). + */ u32 setup:1; /* Disallow bridge core from requesting different VLAN awareness