summaryrefslogtreecommitdiff
path: root/drivers/interconnect
diff options
context:
space:
mode:
authorUttkarsh Aggarwal <quic_uaggarwa@quicinc.com>2024-01-19 15:18:25 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-02-23 09:12:34 +0100
commit57e2e42ccd3cd6183228269715ed032f44536751 (patch)
tree542c04a37919c9f872abd0486bc73aacc236e93c /drivers/interconnect
parent0ecc97c81e3aea3335ea4a0b0f1777aae42b71ec (diff)
downloadlinux-57e2e42ccd3cd6183228269715ed032f44536751.tar.gz
linux-57e2e42ccd3cd6183228269715ed032f44536751.tar.bz2
linux-57e2e42ccd3cd6183228269715ed032f44536751.zip
usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend
commit 61a348857e869432e6a920ad8ea9132e8d44c316 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: 9772b47a4c29 ("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>
Diffstat (limited to 'drivers/interconnect')
0 files changed, 0 insertions, 0 deletions