From patchwork Tue Oct 18 12:12:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Crispin X-Patchwork-Id: 683665 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3syv9Q2D8zz9s8x for ; Tue, 18 Oct 2016 23:13:14 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754372AbcJRMNC (ORCPT ); Tue, 18 Oct 2016 08:13:02 -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: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@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);