diff options
Diffstat (limited to 'net/dsa/dsa2.c')
| -rw-r--r-- | net/dsa/dsa2.c | 9 | 
1 files changed, 6 insertions, 3 deletions
| diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index adf50fbc4c13..47725250b4ca 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -258,11 +258,13 @@ static void dsa_tree_teardown_default_cpu(struct dsa_switch_tree *dst)  static int dsa_port_setup(struct dsa_port *dp)  {  	struct dsa_switch *ds = dp->ds; -	int err; +	int err = 0;  	memset(&dp->devlink_port, 0, sizeof(dp->devlink_port)); -	err = devlink_port_register(ds->devlink, &dp->devlink_port, dp->index); +	if (dp->type != DSA_PORT_TYPE_UNUSED) +		err = devlink_port_register(ds->devlink, &dp->devlink_port, +					    dp->index);  	if (err)  		return err; @@ -293,7 +295,8 @@ static int dsa_port_setup(struct dsa_port *dp)  static void dsa_port_teardown(struct dsa_port *dp)  { -	devlink_port_unregister(&dp->devlink_port); +	if (dp->type != DSA_PORT_TYPE_UNUSED) +		devlink_port_unregister(&dp->devlink_port);  	switch (dp->type) {  	case DSA_PORT_TYPE_UNUSED: | 
