linux/drivers/usb/dwc3
Prashanth K 54aaa3b387 usb: dwc3: gadget: Move vbus draw to workqueue context
Currently dwc3_gadget_vbus_draw() can be called from atomic
context, which in turn invokes power-supply-core APIs. And
some these PMIC APIs have operations that may sleep, leading
to kernel panic.

Fix this by moving the vbus_draw into a workqueue context.

Fixes: 99288de360 ("usb: dwc3: add an alternate path in vbus_draw callback")
Cc: stable <stable@kernel.org>
Tested-by: Samuel Wu <wusamuel@google.com>
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Signed-off-by: Prashanth K <prashanth.k@oss.qualcomm.com>
Link: https://patch.msgid.link/20260204054155.3063825-1-prashanth.k@oss.qualcomm.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2026-02-05 17:13:48 +01:00
..
core.c usb: dwc3: gadget: Move vbus draw to workqueue context 2026-02-05 17:13:48 +01:00
core.h usb: dwc3: gadget: Move vbus draw to workqueue context 2026-02-05 17:13:48 +01:00
debug.h usb: dwc3: Add trace event for dwc3_set_prtcap 2025-09-06 15:21:59 +02:00
debugfs.c usb: dwc3: Add dwc pointer to dwc3_readl/writel 2026-01-16 13:47:07 +01:00
drd.c usb: dwc3: Add dwc pointer to dwc3_readl/writel 2026-01-16 13:47:07 +01:00
dwc3-am62.c usb: Remove redundant pm_runtime_mark_last_busy() calls 2025-11-21 15:11:53 +01:00
dwc3-apple.c usb: dwc3: apple: Ignore USB role switches to the active role 2026-01-14 16:02:54 +01:00
dwc3-exynos.c usb: dwc3-exynos: add support for ExynosAutov920 2025-05-21 13:12:43 +02:00
dwc3-generic-plat.c usb: dwc3: eic7700: Add EIC7700 USB driver 2025-11-21 15:13:35 +01:00
dwc3-google.c usb: dwc3: google: Remove redundant dev_err() 2026-01-23 17:16:05 +01:00
dwc3-haps.c usb: dwc3: haps: Constify the software node 2021-02-04 15:42:06 +01:00
dwc3-imx8mp.c usb: dwc3: imx8mp: disable auto suspend for host role 2026-01-14 15:58:32 +01:00
dwc3-keystone.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
dwc3-meson-g12a.c usb: dwc3: meson-g12a: fix device leaks at unbind 2025-07-25 10:50:43 +02:00
dwc3-octeon.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
dwc3-of-simple.c usb: dwc3: of-simple: fix clock resource leak in dwc3_of_simple_probe 2025-12-17 14:54:38 +01:00
dwc3-omap.c usb: dwc3: omap: Fix devm_regulator_get_optional() error handling 2025-01-11 17:02:30 +01:00
dwc3-pci.c USB/Thunderbolt changes for 6.19-rc1 2025-12-06 18:42:12 -08:00
dwc3-qcom-legacy.c usb: dwc3: qcom: Snapshot driver for backwards compatibilty 2025-04-15 14:29:19 +02:00
dwc3-qcom.c usb: dwc3: Add software-managed properties for flattened model 2025-10-13 09:11:50 +02:00
dwc3-rtk.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
dwc3-st.c usb: dwc3: Don't use %pK through printk 2025-03-14 09:17:30 +01:00
dwc3-xilinx.c usb: dwc3: Always deassert xilinx resets 2026-01-14 16:00:00 +01:00
ep0.c usb: dwc3: Log dwc3 address in traces 2026-01-27 15:52:45 +01:00
gadget.c usb: dwc3: gadget: Move vbus draw to workqueue context 2026-02-05 17:13:48 +01:00
gadget.h usb: dwc3: Add dwc pointer to dwc3_readl/writel 2026-01-16 13:47:07 +01:00
glue.h usb: dwc3: glue: Allow more fine grained control over mode switches 2025-10-22 10:58:31 +02:00
host.c usb: dwc3: keep susphy enabled during exit to avoid controller faults 2025-12-17 14:49:18 +01:00
io.h usb: dwc3: Log dwc3 address in traces 2026-01-27 15:52:45 +01:00
Kconfig usb: dwc3: Add Google Tensor SoC DWC3 glue driver 2025-12-23 15:31:31 +01:00
Makefile usb: dwc3: Add Google Tensor SoC DWC3 glue driver 2025-12-23 15:31:31 +01:00
trace.c usb: dwc3: fix incorrect kernel-doc comment syntax in files 2021-04-02 15:20:51 +02:00
trace.h usb: dwc3: Log dwc3 address in traces 2026-01-27 15:52:45 +01:00
ulpi.c usb: dwc3: Add dwc pointer to dwc3_readl/writel 2026-01-16 13:47:07 +01:00