diff options
Diffstat (limited to 'net/dsa/dsa2.c')
| -rw-r--r-- | net/dsa/dsa2.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index d142eb2b288b..3c3e56a1f34d 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -795,8 +795,14 @@ static int dsa_tree_setup_switches(struct dsa_switch_tree *dst)  	list_for_each_entry(dp, &dst->ports, list) {  		err = dsa_port_setup(dp); -		if (err) +		if (err) { +			dsa_port_devlink_teardown(dp); +			dp->type = DSA_PORT_TYPE_UNUSED; +			err = dsa_port_devlink_setup(dp); +			if (err) +				goto teardown;  			continue; +		}  	}  	return 0;  | 
