The shutdown code only stopped the PHYs but does not diconnect them properly. This could lead to null pointer deref related kernel oopses during reboot. Fix this by calling phy_disconnect() after the PHYs are stopped.
Signed-off-by: John Crispin <j...@phrozen.org> --- net/dsa/slave.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 68714a5..725d9f7 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -154,8 +154,10 @@ static int dsa_slave_close(struct net_device *dev) struct net_device *master = p->parent->dst->master_netdev; struct dsa_switch *ds = p->parent; - if (p->phy) + if (p->phy) { phy_stop(p->phy); + phy_disconnect(p->phy); + } dev_mc_unsync(master, dev); dev_uc_unsync(master, dev); -- 1.7.10.4