mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
usb: gadget: udc: renesas_usb3: fix deadlock by spinlock
commit067d6fdc55upstream. This patch fixes an issue that this driver is possible to cause deadlock by double-spinclocked in renesas_usb3_stop_controller(). So, this patch removes spinlock API calling in renesas_usb3_stop(). (In other words, the previous code had a redundant lock.) Fixes:746bfe63bb("usb: gadget: renesas_usb3: add support for Renesas USB3.0 peripheral controller") Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
723bd3b9f8
commit
dd65c0958b
@@ -1718,14 +1718,11 @@ static int renesas_usb3_start(struct usb_gadget *gadget,
|
||||
static int renesas_usb3_stop(struct usb_gadget *gadget)
|
||||
{
|
||||
struct renesas_usb3 *usb3 = gadget_to_renesas_usb3(gadget);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&usb3->lock, flags);
|
||||
usb3->softconnect = false;
|
||||
usb3->gadget.speed = USB_SPEED_UNKNOWN;
|
||||
usb3->driver = NULL;
|
||||
renesas_usb3_stop_controller(usb3);
|
||||
spin_unlock_irqrestore(&usb3->lock, flags);
|
||||
|
||||
pm_runtime_put(usb3_to_dev(usb3));
|
||||
pm_runtime_disable(usb3_to_dev(usb3));
|
||||
|
||||
Reference in New Issue
Block a user