mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v1] usb: dwc3: gadget: fix gadget workqueue use-after-free
@ 2025-01-22  2:44 Roy Luo
  2025-01-28  1:44 ` Thinh Nguyen
  0 siblings, 1 reply; 7+ messages in thread
From: Roy Luo @ 2025-01-22  2:44 UTC (permalink / raw)
  To: royluo, Thinh.Nguyen, gregkh, linux-usb, linux-kernel, andre.draszik

`dwc3_gadget_soft_disconnect` function, called as part of
`device_del(&gadget->dev)`, queues a new work item to the gadget workqueue
after the workqueue has been flushed in `usb_del_gadget`.
This leads to a potential use-after-free issue.

To fix this, flush the workqueue in the `release` function before freeing
the gadget. This ensures that all work items are processed before the
gadget is destroyed.

Fixes: 1ff24d40b3c3 ("usb: dwc3: gadget: Fix incorrect UDC state after manual deconfiguration")
Signed-off-by: Roy Luo <royluo@google.com>
---
 drivers/usb/dwc3/gadget.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index d27af65eb08a..12055e3af622 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -4580,6 +4580,7 @@ static void dwc_gadget_release(struct device *dev)
 {
 	struct usb_gadget *gadget = container_of(dev, struct usb_gadget, dev);
 
+	flush_work(&gadget->work);
 	kfree(gadget);
 }
 

base-commit: f066b5a6c7a06adfb666b7652cc99b4ff264f4ed
-- 
2.48.0.rc2.279.g1de40edade-goog


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-02-04  0:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-01-22  2:44 [PATCH v1] usb: dwc3: gadget: fix gadget workqueue use-after-free Roy Luo
2025-01-28  1:44 ` Thinh Nguyen
2025-01-31 20:21   ` Roy Luo
2025-01-31 23:44     ` Thinh Nguyen
2025-02-01 16:52       ` Alan Stern
2025-02-03 23:54         ` Thinh Nguyen
2025-02-04  0:04           ` Roy Luo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®