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 Content-Length: 798 Lines: 28 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