On 09/24/2018 03:38 PM, Andrew Lunn wrote: > A HWMON device is only registered is the SFP module supports the > diagnostic page and is complient to SFF8472. Don't unconditionally > unregister the hwmon device when the SFP module is remove, otherwise > we access data structures which don't exist. > > Reported-by: Florian Fainelli <f.faine...@gmail.com> > Fixes: 1323061a018a ("net: phy: sfp: Add HWMON support for module sensors") > Signed-off-by: Andrew Lunn <and...@lunn.ch> > --- > drivers/net/phy/sfp.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c > index 52fffb98fde9..23705ffae6bb 100644 > --- a/drivers/net/phy/sfp.c > +++ b/drivers/net/phy/sfp.c > @@ -1098,8 +1098,11 @@ static int sfp_hwmon_insert(struct sfp *sfp) > > static void sfp_hwmon_remove(struct sfp *sfp) > { > - hwmon_device_unregister(sfp->hwmon_dev); > - kfree(sfp->hwmon_name); > + if (!PTR_ERR_OR_NULL(sfp->hwmon_dev)) {
I believe this should be IS_ERR_OR_NULL(), there is no PTR_ERR_OR_NULL() in the Linux tree AFAICT. > + hwmon_device_unregister(sfp->hwmon_dev); > + sfp->hwmon_dev = NULL; > + kfree(sfp->hwmon_name); > + } > } > #else > static int sfp_hwmon_insert(struct sfp *sfp) > -- Florian