Re: [PATCHv2 10/13] usb: dwc2: initialize the spin_lock for both host and gadget

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux