diff options
author | 2022-03-03 16:08:40 +0200 | |
---|---|---|
committer | 2022-03-06 10:55:54 +0000 | |
commit | afb3cc1a397d77771f342691b7e6b032a234d7f2 (patch) | |
tree | c889c5b038aafdeaaa12d0356728e02f356eff8b /net/dsa | |
parent | mISDN: Fix memory leak in dsp_pipeline_build() (diff) | |
download | linux-afb3cc1a397d77771f342691b7e6b032a234d7f2.tar.gz linux-afb3cc1a397d77771f342691b7e6b032a234d7f2.tar.bz2 linux-afb3cc1a397d77771f342691b7e6b032a234d7f2.zip |
net: dsa: unlock the rtnl_mutex when dsa_master_setup() fails
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>
Diffstat (limited to 'net/dsa')
-rw-r--r-- | net/dsa/dsa2.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index b4e67758e104..074e4a69a728 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -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) |