diff mbox series

usb: dwc3: gadget: Remove check for bounded driver

Message ID 7077bb0f5691732b9814ea76d38ae8e9312a61f5.1612412038.git.Thinh.Nguyen@synopsys.com
State New
Headers show
Series usb: dwc3: gadget: Remove check for bounded driver | expand

Commit Message

Thinh Nguyen Feb. 4, 2021, 4:14 a.m. UTC
The check for bounded gadget driver in dwc3_gadget_start() was to
prevent going through the initialization again without any cleanup. With
a recent update, the UDC framework guarantees this won't happen while
the UDC is started. Also, this check doesn't prevent requesting threaded
irq to the same dev_id, which will mess up the irq freeing logic. Let's
remove it.

Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
---
 drivers/usb/dwc3/gadget.c | 19 ++-----------------
 1 file changed, 2 insertions(+), 17 deletions(-)


base-commit: d021e0694d77ee3cdc5d3fca2c8d53ae7575499a

Comments

gregkh@linuxfoundation.org Feb. 5, 2021, 9:26 a.m. UTC | #1
On Wed, Feb 03, 2021 at 08:14:37PM -0800, Thinh Nguyen wrote:
> The check for bounded gadget driver in dwc3_gadget_start() was to
> prevent going through the initialization again without any cleanup. With
> a recent update, the UDC framework guarantees this won't happen while
> the UDC is started. Also, this check doesn't prevent requesting threaded
> irq to the same dev_id, which will mess up the irq freeing logic. Let's
> remove it.

What "recent update" caused this?  Is this a fix for something that
needs to be backported?  If so, can you provide a "Fixes:" tag on here?
Or is this just a general cleanup that is good to do now.

thanks,

greg k-h
gregkh@linuxfoundation.org Feb. 5, 2021, 9:41 a.m. UTC | #2
On Fri, Feb 05, 2021 at 09:39:37AM +0000, Thinh Nguyen wrote:
> Greg Kroah-Hartman wrote:
> > On Wed, Feb 03, 2021 at 08:14:37PM -0800, Thinh Nguyen wrote:
> >> The check for bounded gadget driver in dwc3_gadget_start() was to
> >> prevent going through the initialization again without any cleanup. With
> >> a recent update, the UDC framework guarantees this won't happen while
> >> the UDC is started. Also, this check doesn't prevent requesting threaded
> >> irq to the same dev_id, which will mess up the irq freeing logic. Let's
> >> remove it.
> > What "recent update" caused this?  Is this a fix for something that
> > needs to be backported?  If so, can you provide a "Fixes:" tag on here?
> > Or is this just a general cleanup that is good to do now.
> >
> > thanks,
> >
> > greg k-h
> 
> It's general cleanup. The "recent update" is not in mainline yet but on
> your "usb-next" branch so I'm not sure how to properly reference it.
> 
> But here's the commit on your branch I was referring to: 49d08cfc7830
> ("usb: udc: core: Introduce started state")

Please refer to this commit just like this, as the id is not going to
change.  Can you redo this patch with that information in it?

thanks,

greg k-h
diff mbox series

Patch

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 86f257f12d45..6a18e822fa98 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2370,7 +2370,7 @@  static int dwc3_gadget_start(struct usb_gadget *g,
 {
 	struct dwc3		*dwc = gadget_to_dwc(g);
 	unsigned long		flags;
-	int			ret = 0;
+	int			ret;
 	int			irq;
 
 	irq = dwc->irq_gadget;
@@ -2379,29 +2379,14 @@  static int dwc3_gadget_start(struct usb_gadget *g,
 	if (ret) {
 		dev_err(dwc->dev, "failed to request irq #%d --> %d\n",
 				irq, ret);
-		goto err0;
+		return ret;
 	}
 
 	spin_lock_irqsave(&dwc->lock, flags);
-	if (dwc->gadget_driver) {
-		dev_err(dwc->dev, "%s is already bound to %s\n",
-				dwc->gadget->name,
-				dwc->gadget_driver->driver.name);
-		ret = -EBUSY;
-		goto err1;
-	}
-
 	dwc->gadget_driver	= driver;
 	spin_unlock_irqrestore(&dwc->lock, flags);
 
 	return 0;
-
-err1:
-	spin_unlock_irqrestore(&dwc->lock, flags);
-	free_irq(irq, dwc);
-
-err0:
-	return ret;
 }
 
 static void __dwc3_gadget_stop(struct dwc3 *dwc)