[RESEND,v3,08/12] usb: dwc2/gadget: do not call disconnect method in pullup

Message ID 1409857474-4497-9-git-send-email-paulz@synopsys.com
State Superseded
Headers show

Commit Message

Paul Zimmerman Sept. 4, 2014, 7:04 p.m.
From: Marek Szyprowski <m.szyprowski@samsung.com>

This leads to potential spinlock recursion in composite framework, other
udc drivers also don't call it directly from pullup method.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Robert Baldyga <r.baldyga@samsung.com>
Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
---
 drivers/usb/dwc2/gadget.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Felipe Balbi Sept. 4, 2014, 7:21 p.m. | #1
On Thu, Sep 04, 2014 at 12:04:30PM -0700, Paul Zimmerman wrote:
> From: Marek Szyprowski <m.szyprowski@samsung.com>
> 
> This leads to potential spinlock recursion in composite framework, other
> udc drivers also don't call it directly from pullup method.
> 
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> Signed-off-by: Robert Baldyga <r.baldyga@samsung.com>
> Signed-off-by: Paul Zimmerman <paulz@synopsys.com>

Cc stable ?

Reviewed-by: Felipe Balbi <balbi@ti.com>

> ---
>  drivers/usb/dwc2/gadget.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> index 97368c4c..55238b0 100644
> --- a/drivers/usb/dwc2/gadget.c
> +++ b/drivers/usb/dwc2/gadget.c
> @@ -2944,7 +2944,6 @@ static int s3c_hsotg_pullup(struct usb_gadget *gadget, int is_on)
>  		s3c_hsotg_phy_enable(hsotg);
>  		s3c_hsotg_core_init(hsotg);
>  	} else {
> -		s3c_hsotg_disconnect(hsotg);
>  		s3c_hsotg_phy_disable(hsotg);
>  	}
>  
> -- 
> 2.1.0.24.g4109c28
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
index 97368c4c..55238b0 100644
--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
@@ -2944,7 +2944,6 @@  static int s3c_hsotg_pullup(struct usb_gadget *gadget, int is_on)
 		s3c_hsotg_phy_enable(hsotg);
 		s3c_hsotg_core_init(hsotg);
 	} else {
-		s3c_hsotg_disconnect(hsotg);
 		s3c_hsotg_phy_disable(hsotg);
 	}