diff options
Diffstat (limited to 'net/dsa/dsa2.c')
| -rw-r--r-- | net/dsa/dsa2.c | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 4d4956ed303b..d142eb2b288b 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -1066,6 +1066,7 @@ static int dsa_port_parse_cpu(struct dsa_port *dp, struct net_device *master)  {  	struct dsa_switch *ds = dp->ds;  	struct dsa_switch_tree *dst = ds->dst; +	const struct dsa_device_ops *tag_ops;  	enum dsa_tag_protocol tag_protocol;  	tag_protocol = dsa_get_tag_protocol(dp, master); @@ -1080,14 +1081,16 @@ static int dsa_port_parse_cpu(struct dsa_port *dp, struct net_device *master)  		 * nothing to do here.  		 */  	} else { -		dst->tag_ops = dsa_tag_driver_get(tag_protocol); -		if (IS_ERR(dst->tag_ops)) { -			if (PTR_ERR(dst->tag_ops) == -ENOPROTOOPT) +		tag_ops = dsa_tag_driver_get(tag_protocol); +		if (IS_ERR(tag_ops)) { +			if (PTR_ERR(tag_ops) == -ENOPROTOOPT)  				return -EPROBE_DEFER;  			dev_warn(ds->dev, "No tagger for this switch\n");  			dp->master = NULL; -			return PTR_ERR(dst->tag_ops); +			return PTR_ERR(tag_ops);  		} + +		dst->tag_ops = tag_ops;  	}  	dp->master = master; |