Message ID | 20200513174145.10048-1-f.fainelli@gmail.com |
---|---|
State | Not Applicable |
Delegated to: | David Miller |
Headers | show |
Series | [stable-5.4.y] net: dsa: Do not make user port errors fatal | expand |
From: Florian Fainelli <f.fainelli@gmail.com> Date: Wed, 13 May 2020 10:41:45 -0700 > commit 86f8b1c01a0a537a73d2996615133be63cdf75db upstream > > Prior to 1d27732f411d ("net: dsa: setup and teardown ports"), we would > not treat failures to set-up an user port as fatal, but after this > commit we would, which is a regression for some systems where interfaces > may be declared in the Device Tree, but the underlying hardware may not > be present (pluggable daughter cards for instance). > > Fixes: 1d27732f411d ("net: dsa: setup and teardown ports") > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > Signed-off-by: David S. Miller <davem@davemloft.net> Greg, please queue this up.
On Wed, May 13, 2020 at 12:55:46PM -0700, David Miller wrote: > From: Florian Fainelli <f.fainelli@gmail.com> > Date: Wed, 13 May 2020 10:41:45 -0700 > > > commit 86f8b1c01a0a537a73d2996615133be63cdf75db upstream > > > > Prior to 1d27732f411d ("net: dsa: setup and teardown ports"), we would > > not treat failures to set-up an user port as fatal, but after this > > commit we would, which is a regression for some systems where interfaces > > may be declared in the Device Tree, but the underlying hardware may not > > be present (pluggable daughter cards for instance). > > > > Fixes: 1d27732f411d ("net: dsa: setup and teardown ports") > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> > > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > > Signed-off-by: David S. Miller <davem@davemloft.net> > > Greg, please queue this up. Now queued up, thanks. greg k-h
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 716d265ba8ca..0f7f38c29579 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -461,18 +461,12 @@ static int dsa_tree_setup_switches(struct dsa_switch_tree *dst) err = dsa_port_setup(dp); if (err) - goto ports_teardown; + continue; } } return 0; -ports_teardown: - for (i = 0; i < port; i++) - dsa_port_teardown(&ds->ports[i]); - - dsa_switch_teardown(ds); - switch_teardown: for (i = 0; i < device; i++) { ds = dst->ds[i];