[PATCH 2/5] extcon: max77693: cancel wq_detcable on driver unbind
From: Tristan Madani
Date: Tue Oct 20 2026 - 11:49:19 EST
From: Tristan Madani <tristan@xxxxxxxxxxxxxxxxxxx>
The driver schedules wq_detcable as a delayed work during probe but
never cancels it. If the device is unbound before the work fires, the
callback dereferences freed memory because the driver data is managed
by devm.
Use devm_delayed_work_autocancel() so the work is automatically
cancelled when the device is removed, matching the existing irq_work
conversion done in the same driver.
Fixes: 297620fd1e14 ("extcon: max77693: Check the state/type of cable after boot completed")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Tristan Madani <tristan@xxxxxxxxxxxxxxxxxxx>
---
drivers/extcon/extcon-max77693.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c
index 2c567e0b7b7f0..a76084e4d5512 100644
--- a/drivers/extcon/extcon-max77693.c
+++ b/drivers/extcon/extcon-max77693.c
@@ -1251,7 +1251,10 @@ static int max77693_muic_probe(struct platform_device *pdev)
* After completing the booting of platform, the extcon provider
* driver should notify cable state to upper layer.
*/
- INIT_DELAYED_WORK(&info->wq_detcable, max77693_muic_detect_cable_wq);
+ ret = devm_delayed_work_autocancel(&pdev->dev, &info->wq_detcable,
+ max77693_muic_detect_cable_wq);
+ if (ret)
+ return ret;
queue_delayed_work(system_power_efficient_wq, &info->wq_detcable,
delay_jiffies);
--
2.47.3