Hi, On Fri, Aug 22, 2014 at 08:52:23PM +0000, Paul Zimmerman wrote: > > From: dinguyen@xxxxxxxxxx [mailto:dinguyen@xxxxxxxxxx] > > Sent: Wednesday, July 30, 2014 8:21 AM > > > > Move spin_lock_init to common location for both host and gadget. > > > > Signed-off-by: Dinh Nguyen <dinguyen@xxxxxxxxxx> > > --- > > drivers/usb/dwc2/hcd.c | 1 - > > drivers/usb/dwc2/platform.c | 1 + > > 2 files changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c > > index 07a7bcd..c6778d9 100644 > > --- a/drivers/usb/dwc2/hcd.c > > +++ b/drivers/usb/dwc2/hcd.c > > @@ -2824,7 +2824,6 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq, > > > > hcd->has_tt = 1; > > > > - spin_lock_init(&hsotg->lock); > > ((struct wrapper_priv_data *) &hcd->hcd_priv)->hsotg = hsotg; > > hsotg->priv = hcd; > > > > diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c > > index eb2a131..4898268 100644 > > --- a/drivers/usb/dwc2/platform.c > > +++ b/drivers/usb/dwc2/platform.c > > @@ -197,6 +197,7 @@ static int dwc2_driver_probe(struct platform_device *dev) > > } > > > > platform_set_drvdata(dev, hsotg); > > + spin_lock_init(&hsotg->lock); > > > > return retval; > > } > > Hi Dinh, > > I don't have a copy of your v3 patches in my mailbox anymore, so I am > replying to the v2 one instead. > > Are you absolutely sure that no code that takes the spinlock can be > called before this point? This is the last line in the probe() > function, so I have a hard time believing it is safe to initialize > the spinlock this late. > > In particular, the IRQ has already been attached, and > usb_add_gadget_udc() has already been called. So it seems entirely > possible that some other entity could try to access the driver before > this point. you're right with this comment. request_irq() enables the IRQ line and it could be that we already have a pending event to handle which fires as soon as we enable that IRQ line. -- balbi
Attachment:
signature.asc
Description: Digital signature