developer | ec4ebe4 | 2022-04-12 11:17:45 +0800 | [diff] [blame] | 1 | From 5eb0df5023c6ae8a71a7848fd5e1f788d86e51ae Mon Sep 17 00:00:00 2001 |
| 2 | From: Russell King <rmk+kernel@armlinux.org.uk> |
| 3 | Date: Tue, 3 Dec 2019 18:46:04 +0000 |
| 4 | Subject: [PATCH] net: sfp: fix hwmon |
| 5 | |
| 6 | The referenced commit below allowed more than one hwmon device to be |
| 7 | created per SFP, which is definitely not what we want. Avoid this by |
| 8 | only creating the hwmon device just as we transition to WAITDEV state. |
| 9 | |
| 10 | Fixes: 139d3a212a1f ("net: sfp: allow modules with slow diagnostics to probe") |
| 11 | Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> |
| 12 | --- |
| 13 | drivers/net/phy/sfp.c | 13 ++++--------- |
| 14 | 1 file changed, 4 insertions(+), 9 deletions(-) |
| 15 | |
| 16 | --- a/drivers/net/phy/sfp.c |
| 17 | +++ b/drivers/net/phy/sfp.c |
developer | 53810fa | 2022-04-19 10:14:08 +0800 | [diff] [blame] | 18 | @@ -1891,6 +1891,10 @@ static void sfp_sm_module(struct sfp *sf |
developer | ec4ebe4 | 2022-04-12 11:17:45 +0800 | [diff] [blame] | 19 | break; |
| 20 | } |
| 21 | |
| 22 | + err = sfp_hwmon_insert(sfp); |
| 23 | + if (err) |
| 24 | + dev_warn(sfp->dev, "hwmon probe failed: %d\n", err); |
| 25 | + |
| 26 | sfp_sm_mod_next(sfp, SFP_MOD_WAITDEV, 0); |
| 27 | /* fall through */ |
| 28 | case SFP_MOD_WAITDEV: |
developer | 53810fa | 2022-04-19 10:14:08 +0800 | [diff] [blame] | 29 | @@ -1940,15 +1944,6 @@ static void sfp_sm_module(struct sfp *sf |
developer | ec4ebe4 | 2022-04-12 11:17:45 +0800 | [diff] [blame] | 30 | case SFP_MOD_ERROR: |
| 31 | break; |
| 32 | } |
| 33 | - |
| 34 | -#if IS_ENABLED(CONFIG_HWMON) |
| 35 | - if (sfp->sm_mod_state >= SFP_MOD_WAITDEV && |
| 36 | - IS_ERR_OR_NULL(sfp->hwmon_dev)) { |
| 37 | - err = sfp_hwmon_insert(sfp); |
| 38 | - if (err) |
| 39 | - dev_warn(sfp->dev, "hwmon probe failed: %d\n", err); |
| 40 | - } |
| 41 | -#endif |
| 42 | } |
| 43 | |
| 44 | static void sfp_sm_main(struct sfp *sfp, unsigned int event) |