From: Claudiu Manoil Date: Wed, 23 Apr 2014 13:38:47 +0000 (+0300) Subject: gianfar: Check if phydev present on ethtool -A X-Git-Tag: v3.12.71~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b24cd48cfb7dd16759feb6e6e5f1b0533ed6ae2b;p=thirdparty%2Fkernel%2Fstable.git gianfar: Check if phydev present on ethtool -A commit 98a46d46d1bc983125b6ff9a0e831050a7011713 upstream. This fixes a seg fault on 'ethtool -A' entry if the interface is down. Obviously we need to have the phy device initialized / "connected" (see of_phy_connect()) to be able to advertise pause frame capabilities. Fixes: 23402bddf9e56eecb27bbd1e5467b3b79b3dbe58 Signed-off-by: Claudiu Manoil Signed-off-by: David S. Miller Signed-off-by: Jiri Slaby --- diff --git a/drivers/net/ethernet/freescale/gianfar_ethtool.c b/drivers/net/ethernet/freescale/gianfar_ethtool.c index d3d7ede27ef14..c0f7328adb138 100644 --- a/drivers/net/ethernet/freescale/gianfar_ethtool.c +++ b/drivers/net/ethernet/freescale/gianfar_ethtool.c @@ -553,6 +553,9 @@ static int gfar_spauseparam(struct net_device *dev, struct gfar __iomem *regs = priv->gfargrp[0].regs; u32 oldadv, newadv; + if (!phydev) + return -ENODEV; + if (!(phydev->supported & SUPPORTED_Pause) || (!(phydev->supported & SUPPORTED_Asym_Pause) && (epause->rx_pause != epause->tx_pause)))