OSDN Git Service

net: dsa: warn about dsa_port and dsa_switch bit fields being non atomic
authorVladimir Oltean <vladimir.oltean@nxp.com>
Wed, 5 Jan 2022 22:11:50 +0000 (00:11 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 Jan 2022 12:16:21 +0000 (12:16 +0000)
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 <f.fainelli@gmail.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/dsa.h

index 63c7f55..57b3e4e 100644 (file)
@@ -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