|
@@ -126,6 +126,7 @@ static inline struct net_device *dsa_master_find_slave(struct net_device *dev,
|
|
|
struct dsa_port *cpu_dp = dev->dsa_ptr;
|
|
|
struct dsa_switch_tree *dst = cpu_dp->dst;
|
|
|
struct dsa_switch *ds;
|
|
|
+ struct dsa_port *slave_port;
|
|
|
|
|
|
if (device < 0 || device >= DSA_MAX_SWITCHES)
|
|
|
return NULL;
|
|
@@ -137,7 +138,12 @@ static inline struct net_device *dsa_master_find_slave(struct net_device *dev,
|
|
|
if (port < 0 || port >= ds->num_ports)
|
|
|
return NULL;
|
|
|
|
|
|
- return ds->ports[port].slave;
|
|
|
+ slave_port = &ds->ports[port];
|
|
|
+
|
|
|
+ if (unlikely(slave_port->type != DSA_PORT_TYPE_USER))
|
|
|
+ return NULL;
|
|
|
+
|
|
|
+ return slave_port->slave;
|
|
|
}
|
|
|
|
|
|
/* port.c */
|