On Wed, Jul 11, 2018 at 08:15:48PM +0000, Dan Rue wrote:
On Thu, Apr 19, 2018 at 10:05:24PM +0300, Leonard Crestez wrote:
On Thu, 2018-04-19 at 11:32 -0700, Florian Fainelli wrote:
+Others who reported the same problem On 04/19/2018 11:24 AM, Naresh Kamboju wrote:
On 19 April 2018 at 21:41, Leonard Crestez leonard.crestez@nxp.com wrote:
Looking at this dump I'm guessing that phydev->priv is NULL at the start of kszphy_config_reset and this really shouldn't be happening.
The phydev->priv field is initialized by kszphy_probe but your particular phy (KSZ9031) in linux-4.9.y does not seem to have .probe = kszphy_probe assigned in the struct phy_driver ksphy_driver array.
In upstream this was added by commit bfe72442578b ("net: phy: micrel: fix crash when statistic requested for KSZ9031 phy"). The message for that patch claims to fix a kernel crash on this command:
ethtool --phy-statistics eth0
Looking at the code this issue should affect linux-4.9.y on your board. Naresh: can you please check?
After reverting the patch i have run this command and kernel oops showed up. ethtool --phy-statistics eth0
PC is at kszphy_get_stats+0x74/0xa8
ethtool --phy-statistics eth0 crashed on x15
Chris proposed the following patch, which has not been formally submitted yet:
Meanwhile, Greg seems to have reverted the offending patch, so we should be good with 4.9.95.
I don't object to reverting my patch from linux-4.14.y but it seems all the affected hardware would also be affected by the crash from ethtool --phy-statistics eth0. Adding bfe72442578b to stable would be great because it fixes more than the patch in the title.
In the other thread there is a mention that "Micrel KSZ8795", "Micrel KSZ886X Switch", "Micrel KSZ8061", and "Micrel KS8737" might still have problems after bfe72442578b. Is this because they have kszphy_config_init but not kszphy_probe? All versions of kszphy_config_init seem to check for a NULL priv.
To conclude this thread, bfe72442578b has been backported as of 4.9.112 and 'ethtool --phy-statistics eth0' no longer causes a NULL pointer error.
Wonderful, thanks for confirming this.
greg k-h