dsa: slave: Don't reference NULL pointer during phy_disconnect
When the phy is disconnected, the parent pointer to the netdev it was attached to is set to NULL. The code then tries to suspend the phy, but dsa_slave_fixed_link_update needs the parent pointer to determine which switch the phy is connected to. So it dereferenced a NULL pointer. Check for this condition. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ca3dfa51e6
commit
b71be352f7
|
@ -896,11 +896,15 @@ static void dsa_slave_adjust_link(struct net_device *dev)
|
||||||
static int dsa_slave_fixed_link_update(struct net_device *dev,
|
static int dsa_slave_fixed_link_update(struct net_device *dev,
|
||||||
struct fixed_phy_status *status)
|
struct fixed_phy_status *status)
|
||||||
{
|
{
|
||||||
struct dsa_slave_priv *p = netdev_priv(dev);
|
struct dsa_slave_priv *p;
|
||||||
struct dsa_switch *ds = p->parent;
|
struct dsa_switch *ds;
|
||||||
|
|
||||||
if (ds->drv->fixed_link_update)
|
if (dev) {
|
||||||
ds->drv->fixed_link_update(ds, p->port, status);
|
p = netdev_priv(dev);
|
||||||
|
ds = p->parent;
|
||||||
|
if (ds->drv->fixed_link_update)
|
||||||
|
ds->drv->fixed_link_update(ds, p->port, status);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue