Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1620782

Re: [PATCH] net: phy: micrel: KSZ9031: fix crash when statistic requested

Path csiph.com!news.mixmin.net!aioe.org!bofh.it!news.nic.it!robomod
From Florian Fainelli <f.fainelli@gmail.com>
Newsgroups linux.kernel
Subject Re: [PATCH] net: phy: micrel: KSZ9031: fix crash when statistic requested
Date Tue, 11 Apr 2017 01:50:02 +0200
Message-ID <tuRei-7C4-5@gated-at.bofh.it> (permalink)
References <tuR4C-7xq-13@gated-at.bofh.it>
X-Original-To Grygorii Strashko <grygorii.strashko@ti.com>, "David S. Miller" <davem@davemloft.net>, netdev@vger.kernel.org, Andrew Lunn <andrew@lunn.ch>
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=MpEWIF1e+zWIPKPnqPT5wd6/z+elhFDLkDVWVDe3+W4=; b=QatSMFuSdTNZo9cRkpEkmVCsiZPGZyWUcq/YySVIGjZF/9ySK/HDjDOGxPeUp83bje knZf8WRQIUaLDjtfQ35TdA5nVFjbP5K92+mQdkPaxzutwjsx5J29SaQ0GMHevuHgp40P Bqi9DudbOG0o4aTT9ZM6xN5LKfUcM1V+gTXwMSd94nFXv2p0OXWscs69TkfXnXdao6IL IpzCw5D1I+hrXZrEtjGPuGUNWeygyeK5sJPwcFh95m3aVcpXVIq9byq83qUBl+egL9Cc /oCiVJO35t0DJmRi/Le8fOEyQ8Kndnt9sq1Pk9qnsUVaf/HPvXv9HEEZJFihTsreMeic 9VaA==
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=MpEWIF1e+zWIPKPnqPT5wd6/z+elhFDLkDVWVDe3+W4=; b=AOQGyvipOAY6dp77EGmZKX1v8a2HoLNiXCFDX2gK7lwuW6J1e/MDgjURKhJ7DHDy8E XjPeQ3FdK/SjhvcXpjt/b5VjveBZZzjZEv74zlWKYB3+h9UxsJPoF+WMID11KaPKmRra +nhOoTqQ3+rsNtv0L0l6zIo2T36mWX5aOcR31FzTVg8R30C+k2IMlCb3JC3WnVtL7bHX zTFKbAxNdw2AmopnDoney6Km6yiugZ1wTIkMk2BXwIJItooyIsu3LFcEHEQjKyQwrx5S yv0qgraAt2XAG1LOvKitIVoqB7IIBz06yExAvbjgjNj1JLguHeF1plw1kf+VNKXeCL4S QV9g==
X-Gm-Message-State AN3rC/7YFAHhGA/QXU14ewgqbqeAbyjsi2ssXjOjfcG4iYJA12vQQGwh t4vlrWLkiz5VfQ==
X-Received by 10.28.182.69 with SMTP id g66mr12383596wmf.112.1491867642229; Mon, 10 Apr 2017 16:40:42 -0700 (PDT)
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
MIME-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 7bit
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 86
Organization linux.* mail to news gateway
X-Original-Cc Sekhar Nori <nsekhar@ti.com>, linux-kernel@vger.kernel.org
X-Original-Date Mon, 10 Apr 2017 16:40:37 -0700
X-Original-Message-ID <e821198e-5a61-7912-d120-205f66c02650@gmail.com>
X-Original-References <20170410233324.1178-1-grygorii.strashko@ti.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1620782

Show key headers only | View raw


On 04/10/2017 04:33 PM, Grygorii Strashko wrote:
> Now the command:
> 	ethtool --phy-statistics eth0
> will cause system crash with meassage "Unable to handle kernel NULL pointer
> dereference at virtual address 00000010" from:
> 
>  (kszphy_get_stats) from [<c069f1d8>] (ethtool_get_phy_stats+0xd8/0x210)
>  (ethtool_get_phy_stats) from [<c06a0738>] (dev_ethtool+0x5b8/0x228c)
>  (dev_ethtool) from [<c06b5484>] (dev_ioctl+0x3fc/0x964)
>  (dev_ioctl) from [<c0679f7c>] (sock_ioctl+0x170/0x2c0)
>  (sock_ioctl) from [<c02419d4>] (do_vfs_ioctl+0xa8/0x95c)
>  (do_vfs_ioctl) from [<c02422c4>] (SyS_ioctl+0x3c/0x64)
>  (SyS_ioctl) from [<c0107d60>] (ret_fast_syscall+0x0/0x44)
> 
> The reason: phy_driver structure for KSZ9031 phy has no .probe() callback
> defined. As result, struct phy_device *phydev->priv pointer will not be
> initializes (null).

This is a strange way to fix the problem, presumably this PHY supports
fetching statistics, if that is the case it sounds like we would want to
sort of provide two probe function:

- one which is just allocating the PHY device's private structure so we
have enough room for statistics
- another one which is doing all the reference clock fetching and so on

By adding a NULL pointer check here, you'd be better off just removing
all the function pointers pertaining to ethtool statistics.

> 
> Fix it by adding additional checks for !phydev->priv in
> kszphy_get_stats(), kszphy_get_strings() and kszphy_get_sset_count()
> 
> Fixes: 2b2427d06426 ("phy: micrel: Add ethtool statistics counters")
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
>  drivers/net/phy/micrel.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
> index 6742070..8dbc1be 100644
> --- a/drivers/net/phy/micrel.c
> +++ b/drivers/net/phy/micrel.c
> @@ -574,7 +574,6 @@ static int ksz9031_config_init(struct phy_device *phydev)
>  				MII_KSZ9031RN_TX_DATA_PAD_SKEW, 4,
>  				tx_data_skews, 4);
>  	}
> -
>  	return ksz9031_center_flp_timing(phydev);
>  }
>  
> @@ -654,6 +653,9 @@ ksz9021_wr_mmd_phyreg(struct phy_device *phydev, int ptrad, int devnum,
>  
>  static int kszphy_get_sset_count(struct phy_device *phydev)
>  {
> +	if (!phydev->priv)
> +		return -EOPNOTSUPP;
> +
>  	return ARRAY_SIZE(kszphy_hw_stats);
>  }
>  
> @@ -661,6 +663,9 @@ static void kszphy_get_strings(struct phy_device *phydev, u8 *data)
>  {
>  	int i;
>  
> +	if (!phydev->priv)
> +		return;
> +
>  	for (i = 0; i < ARRAY_SIZE(kszphy_hw_stats); i++) {
>  		memcpy(data + i * ETH_GSTRING_LEN,
>  		       kszphy_hw_stats[i].string, ETH_GSTRING_LEN);
> @@ -694,6 +699,9 @@ static void kszphy_get_stats(struct phy_device *phydev,
>  {
>  	int i;
>  
> +	if (!phydev->priv)
> +		return;
> +
>  	for (i = 0; i < ARRAY_SIZE(kszphy_hw_stats); i++)
>  		data[i] = kszphy_get_stat(phydev, i);
>  }
> 


-- 
Florian

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] net: phy: micrel: KSZ9031: fix crash when statistic requested Grygorii Strashko <grygorii.strashko@ti.com> - 2017-04-11 01:40 +0200
  Re: [PATCH] net: phy: micrel: KSZ9031: fix crash when statistic  requested Florian Fainelli <f.fainelli@gmail.com> - 2017-04-11 01:50 +0200
    Re: [PATCH] net: phy: micrel: KSZ9031: fix crash when statistic  requested Grygorii Strashko <grygorii.strashko@ti.com> - 2017-04-11 18:20 +0200
      Re: [PATCH] net: phy: micrel: KSZ9031: fix crash when statistic  requested Andrew Lunn <andrew@lunn.ch> - 2017-04-11 18:40 +0200
        Re: [PATCH] net: phy: micrel: KSZ9031: fix crash when statistic  requested Grygorii Strashko <grygorii.strashko@ti.com> - 2017-04-11 19:20 +0200

csiph-web