Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754005AbdHUOYb (ORCPT ); Mon, 21 Aug 2017 10:24:31 -0400 Received: from vps0.lunn.ch ([178.209.37.122]:37193 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753222AbdHUOY3 (ORCPT ); Mon, 21 Aug 2017 10:24:29 -0400 Date: Mon, 21 Aug 2017 16:24:26 +0200 From: Andrew Lunn To: Romain Perier Cc: Giuseppe Cavallaro , Alexandre Torgue , Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 2/2] net: phy: Don't use drv when it is NULL in phy_attached_print Message-ID: <20170821142426.GF1703@lunn.ch> References: <20170821114530.13706-1-romain.perier@collabora.com> <20170821114530.13706-3-romain.perier@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170821114530.13706-3-romain.perier@collabora.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1438 Lines: 38 On Mon, Aug 21, 2017 at 01:45:30PM +0200, Romain Perier wrote: > Currently, if this logging function is used prior the phy driver is > bound to the phy device (that is usually done from .ndo_open), > 'phydev->drv' might be NULL, resulting in a kernel crash. That is > typically the case in the stmmac driver, info about the phy is displayed > during the registration of the MDIO bus, and then genphy driver is bound > to this phydev when .ndo_open is called. > > This commit fixes the issue by using the right genphy driver, when > phydev->drv is NULL. > > Fixes: fbca164776e4 ("net: stmmac: Use the right logging functi") > Signed-off-by: Romain Perier > --- > drivers/net/phy/phy_device.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c > index 1790f7fec125..6af6dc6dfeaf 100644 > --- a/drivers/net/phy/phy_device.c > +++ b/drivers/net/phy/phy_device.c > @@ -864,15 +864,24 @@ EXPORT_SYMBOL(phy_attached_info); > #define ATTACHED_FMT "attached PHY driver [%s] (mii_bus:phy_addr=%s, irq=%d)" > void phy_attached_print(struct phy_device *phydev, const char *fmt, ...) > { > + struct phy_driver *drv = phydev->drv; > + > + if (!drv) { > + if (phydev->is_c45) > + drv = &genphy_10g_driver; > + else > + drv = &genphy_driver; > + } > + As i said in my comment to v1, i don't like this. Andrew