kernel: sfp: add two fixes submitted to upstream
Add two small fixes for SFP that were submitted upstream. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
This commit is contained in:
parent
46678fbdca
commit
10b12b5d68
2 changed files with 72 additions and 0 deletions
|
@ -0,0 +1,28 @@
|
||||||
|
From 729fd05aac22cdf1e502fbf1bf80e5ebba0d9fbc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
|
Date: Tue, 3 Dec 2019 17:48:28 +0000
|
||||||
|
Subject: [PATCH] net: sfp: fix unbind
|
||||||
|
|
||||||
|
When unbinding, we don't correctly tear down the module state, leaving
|
||||||
|
(for example) the hwmon registration behind. Ensure everything is
|
||||||
|
properly removed by sending a remove event at unbind.
|
||||||
|
|
||||||
|
Fixes: 6b0da5c9c1a3 ("net: sfp: track upstream's attachment state in state machine")
|
||||||
|
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
|
---
|
||||||
|
drivers/net/phy/sfp.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
--- a/drivers/net/phy/sfp.c
|
||||||
|
+++ b/drivers/net/phy/sfp.c
|
||||||
|
@@ -2242,6 +2242,10 @@ static int sfp_remove(struct platform_de
|
||||||
|
|
||||||
|
sfp_unregister_socket(sfp->sfp_bus);
|
||||||
|
|
||||||
|
+ rtnl_lock();
|
||||||
|
+ sfp_sm_event(sfp, SFP_E_REMOVE);
|
||||||
|
+ rtnl_unlock();
|
||||||
|
+
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
From 5eb0df5023c6ae8a71a7848fd5e1f788d86e51ae Mon Sep 17 00:00:00 2001
|
||||||
|
From: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
|
Date: Tue, 3 Dec 2019 18:46:04 +0000
|
||||||
|
Subject: [PATCH] net: sfp: fix hwmon
|
||||||
|
|
||||||
|
The referenced commit below allowed more than one hwmon device to be
|
||||||
|
created per SFP, which is definitely not what we want. Avoid this by
|
||||||
|
only creating the hwmon device just as we transition to WAITDEV state.
|
||||||
|
|
||||||
|
Fixes: 139d3a212a1f ("net: sfp: allow modules with slow diagnostics to probe")
|
||||||
|
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
|
---
|
||||||
|
drivers/net/phy/sfp.c | 13 ++++---------
|
||||||
|
1 file changed, 4 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/phy/sfp.c
|
||||||
|
+++ b/drivers/net/phy/sfp.c
|
||||||
|
@@ -1714,6 +1714,10 @@ static void sfp_sm_module(struct sfp *sf
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ err = sfp_hwmon_insert(sfp);
|
||||||
|
+ if (err)
|
||||||
|
+ dev_warn(sfp->dev, "hwmon probe failed: %d\n", err);
|
||||||
|
+
|
||||||
|
sfp_sm_mod_next(sfp, SFP_MOD_WAITDEV, 0);
|
||||||
|
/* fall through */
|
||||||
|
case SFP_MOD_WAITDEV:
|
||||||
|
@@ -1763,15 +1767,6 @@ static void sfp_sm_module(struct sfp *sf
|
||||||
|
case SFP_MOD_ERROR:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
-#if IS_ENABLED(CONFIG_HWMON)
|
||||||
|
- if (sfp->sm_mod_state >= SFP_MOD_WAITDEV &&
|
||||||
|
- IS_ERR_OR_NULL(sfp->hwmon_dev)) {
|
||||||
|
- err = sfp_hwmon_insert(sfp);
|
||||||
|
- if (err)
|
||||||
|
- dev_warn(sfp->dev, "hwmon probe failed: %d\n", err);
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sfp_sm_main(struct sfp *sfp, unsigned int event)
|
Loading…
Reference in a new issue