OSDN Git Service

net: dsa: unlock the rtnl_mutex when dsa_master_setup() fails
authorVladimir Oltean <vladimir.oltean@nxp.com>
Thu, 3 Mar 2022 14:08:40 +0000 (16:08 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 6 Mar 2022 10:55:54 +0000 (10:55 +0000)
After the blamed commit, dsa_tree_setup_master() may exit without
calling rtnl_unlock(), fix that.

Fixes: c146f9bc195a ("net: dsa: hold rtnl_mutex when calling dsa_master_{setup,teardown}")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dsa/dsa2.c

index b4e6775..074e4a6 100644 (file)
@@ -1058,7 +1058,7 @@ static int dsa_tree_setup_switches(struct dsa_switch_tree *dst)
 static int dsa_tree_setup_master(struct dsa_switch_tree *dst)
 {
        struct dsa_port *dp;
-       int err;
+       int err = 0;
 
        rtnl_lock();
 
@@ -1066,13 +1066,13 @@ static int dsa_tree_setup_master(struct dsa_switch_tree *dst)
                if (dsa_port_is_cpu(dp)) {
                        err = dsa_master_setup(dp->master, dp);
                        if (err)
-                               return err;
+                               break;
                }
        }
 
        rtnl_unlock();
 
-       return 0;
+       return err;
 }
 
 static void dsa_tree_teardown_master(struct dsa_switch_tree *dst)