From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757444AbcJRMNH (ORCPT ); Tue, 18 Oct 2016 08:13:07 -0400 Received: from nbd.name ([46.4.11.11]:36928 "EHLO nbd.name" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752020AbcJRMM7 (ORCPT ); Tue, 18 Oct 2016 08:12:59 -0400 From: John Crispin To: Andrew Lunn , Vivien Didelot , Florian Fainelli , "David S. Miller" Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, John Crispin Subject: [PATCH] net: dsa: properly disconnect the slave PHYs Date: Tue, 18 Oct 2016 14:12:40 +0200 Message-Id: <1476792760-60356-1-git-send-email-john@phrozen.org> X-Mailer: git-send-email 1.7.10.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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