diff options
Diffstat (limited to 'net/dsa/dsa2.c')
| -rw-r--r-- | net/dsa/dsa2.c | 23 | 
1 files changed, 10 insertions, 13 deletions
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index ca6af86964bc..cf933225df32 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -562,7 +562,6 @@ static void dsa_port_teardown(struct dsa_port *dp)  {  	struct devlink_port *dlp = &dp->devlink_port;  	struct dsa_switch *ds = dp->ds; -	struct net_device *slave;  	if (!dp->setup)  		return; @@ -584,11 +583,9 @@ static void dsa_port_teardown(struct dsa_port *dp)  		dsa_port_link_unregister_of(dp);  		break;  	case DSA_PORT_TYPE_USER: -		slave = dp->slave; - -		if (slave) { +		if (dp->slave) { +			dsa_slave_destroy(dp->slave);  			dp->slave = NULL; -			dsa_slave_destroy(slave);  		}  		break;  	} @@ -1147,17 +1144,17 @@ static int dsa_tree_setup(struct dsa_switch_tree *dst)  	if (err)  		goto teardown_cpu_ports; -	err = dsa_tree_setup_master(dst); +	err = dsa_tree_setup_ports(dst);  	if (err)  		goto teardown_switches; -	err = dsa_tree_setup_ports(dst); +	err = dsa_tree_setup_master(dst);  	if (err) -		goto teardown_master; +		goto teardown_ports;  	err = dsa_tree_setup_lags(dst);  	if (err) -		goto teardown_ports; +		goto teardown_master;  	dst->setup = true; @@ -1165,10 +1162,10 @@ static int dsa_tree_setup(struct dsa_switch_tree *dst)  	return 0; -teardown_ports: -	dsa_tree_teardown_ports(dst);  teardown_master:  	dsa_tree_teardown_master(dst); +teardown_ports: +	dsa_tree_teardown_ports(dst);  teardown_switches:  	dsa_tree_teardown_switches(dst);  teardown_cpu_ports: @@ -1186,10 +1183,10 @@ static void dsa_tree_teardown(struct dsa_switch_tree *dst)  	dsa_tree_teardown_lags(dst); -	dsa_tree_teardown_ports(dst); -  	dsa_tree_teardown_master(dst); +	dsa_tree_teardown_ports(dst); +  	dsa_tree_teardown_switches(dst);  	dsa_tree_teardown_cpu_ports(dst);  | 
