linux/drivers/usb
Uttkarsh Aggarwal 36695d5eee usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend
commit 61a348857e upstream.

In current scenario if Plug-out and Plug-In performed continuously
there could be a chance while checking for dwc->gadget_driver in
dwc3_gadget_suspend, a NULL pointer dereference may occur.

Call Stack:

	CPU1:                           CPU2:
	gadget_unbind_driver            dwc3_suspend_common
	dwc3_gadget_stop                dwc3_gadget_suspend
                                        dwc3_disconnect_gadget

CPU1 basically clears the variable and CPU2 checks the variable.
Consider CPU1 is running and right before gadget_driver is cleared
and in parallel CPU2 executes dwc3_gadget_suspend where it finds
dwc->gadget_driver which is not NULL and resumes execution and then
CPU1 completes execution. CPU2 executes dwc3_disconnect_gadget where
it checks dwc->gadget_driver is already NULL because of which the
NULL pointer deference occur.

Cc: stable@vger.kernel.org
Fixes: 9772b47a4c ("usb: dwc3: gadget: Fix suspend/resume during device mode")
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Signed-off-by: Uttkarsh Aggarwal <quic_uaggarwa@quicinc.com>
Link: https://lore.kernel.org/r/20240119094825.26530-1-quic_uaggarwa@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2024-02-23 09:51:32 +01:00
..
atm usb: atm: Use size_add() in call to struct_size() 2023-10-02 09:48:51 -07:00
c67x00 USB: c67x00: Remove unused declaration c67x00_hcd_msg_received() 2023-10-02 16:42:33 +02:00
cdns3 usb: cdns3: Fix uvc fail when DMA cross 4k boundery since sg enabled 2024-01-25 15:45:11 -08:00
chipidea usb: chipidea: core: handle power lost in workqueue 2024-02-23 09:51:31 +01:00
class usb: cdc-acm: return correct error code on unsupported break 2024-01-25 15:45:23 -08:00
common usb: ulpi: Fix debugfs directory leak 2024-02-23 09:51:31 +01:00
core usb: core: Prevent null pointer dereference in update_port_device_state 2024-02-23 09:51:32 +01:00
dwc2 USB: dwc2: write HCINT with INTMASK applied 2023-11-21 15:30:27 +01:00
dwc3 usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend 2024-02-23 09:51:32 +01:00
early usb: early: xhci-dbc: Use memcpy_and_pad() 2023-01-31 10:40:54 +01:00
fotg210 usb: fotg210-hcd: delete an incorrect bounds test 2023-12-15 14:01:30 +01:00
gadget usb: f_mass_storage: forbid async queue when shutdown happen 2024-02-23 09:51:31 +01:00
host xhci: handle isoc Babble and Buffer Overrun events properly 2024-02-16 19:14:28 +01:00
image scsi: usb: uas: Declare two host templates and host template pointers const 2023-03-24 19:20:00 -04:00
isp1760 usb: isp1760: Convert to platform remove callback returning void 2023-05-28 12:38:01 +01:00
misc usb: misc: onboard-hub: add support for Microchip USB5744 2023-11-22 12:12:56 +00:00
mon usb: mon: Fix atomicity violation in mon_bin_vma_fault 2024-01-25 15:45:11 -08:00
mtu3 usb: mtu3: Convert to platform remove callback returning void 2023-10-21 12:49:08 +02:00
musb Merge 6.6-rc6 into usb-next 2023-10-16 17:36:12 +02:00
phy usb: phy: mxs: remove CONFIG_USB_OTG condition for mxs_phy_is_otg_host() 2024-01-25 15:45:10 -08:00
renesas_usbhs usb: Explicitly include correct DT includes 2023-07-25 18:20:02 +02:00
roles USB: roles: make role_class a static const structure 2023-06-20 16:20:40 +02:00
serial USB: serial: cp210x: add ID for IMST iM871A-USB 2024-02-16 19:14:28 +01:00
storage usb-storage: Add quirk for incorrect WP on Kingston DT Ultimate 3.0 G3 2023-12-15 14:00:58 +01:00
typec usb: ucsi_acpi: Fix command completion handling 2024-02-23 09:51:31 +01:00
usbip USB/Thunderbolt changes for 6.7-rc1 2023-11-03 16:00:42 -10:00
Kconfig usb: pci-quirks: handle HAS_IOPORT dependency for AMD quirk 2023-10-02 16:19:12 +02:00
Makefile usb: host: u132-hcd: Delete driver 2023-03-21 14:06:11 +01:00
usb-skeleton.c usb: add usb_set_intfdata() documentation 2022-11-29 08:56:09 +01:00