Thread (27 messages) 27 messages, 4 authors, 7d ago

Re: [PATCH net 2/9] ethtool: module: avoid leaking a netdev ref on module flash errors

From: Maxime Chevallier <maxime.chevallier@bootlin.com>
Date: 2026-05-23 14:32:52

Hi,

On 5/23/26 01:13, Jakub Kicinski wrote:
module_flash_fw_schedule() is missing undo for setting
the "in_progress" flag and taking the netdev reference.
Delay taking these, the device can't disappear while
we are holding rtnl_lock.

Fixes: 32b4c8b53ee7 ("ethtool: Add ability to flash transceiver modules' firmware")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>

Maxime
quoted hunk ↗ jump to hunk
---
CC: andrew@lunn.ch
CC: maxime.chevallier@bootlin.com
CC: danieller@nvidia.com
CC: petrm@nvidia.com
---
  net/ethtool/module.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/net/ethtool/module.c b/net/ethtool/module.c
index 741f6fb25d45..392c03935e5e 100644
--- a/net/ethtool/module.c
+++ b/net/ethtool/module.c
@@ -319,8 +319,6 @@ module_flash_fw_schedule(struct net_device *dev, const char *file_name,
  	if (err < 0)
  		goto err_release_firmware;
  
-	dev->ethtool->module_fw_flash_in_progress = true;
-	netdev_hold(dev, &module_fw->dev_tracker, GFP_KERNEL);
  	fw_update->dev = dev;
  	fw_update->ntf_params.portid = info->snd_portid;
  	fw_update->ntf_params.seq = info->snd_seq;
@@ -335,6 +333,9 @@ module_flash_fw_schedule(struct net_device *dev, const char *file_name,
  	if (err < 0)
  		goto err_release_firmware;
  
+	dev->ethtool->module_fw_flash_in_progress = true;
+	netdev_hold(dev, &module_fw->dev_tracker, GFP_KERNEL);
+
  	schedule_work(&module_fw->work);
  
  	return 0;
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help