On 8 August 2015 at 01:53, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > On Fri, Aug 07, 2015 at 05:22:47PM +0800, Baolin Wang wrote: >> On 7 August 2015 at 17:07, Peter Chen <Peter.Chen@xxxxxxxxxxxxx> wrote: >> > >> >> >> /** >> >> >> * struct usb_udc - describes one usb device controller @@ -127,12 >> >> >> +128,45 @@ void usb_gadget_giveback_request(struct usb_ep *ep, } >> >> >> EXPORT_SYMBOL_GPL(usb_gadget_giveback_request); >> >> >> >> >> >> +int usb_gadget_register_notify(struct usb_gadget *gadget, >> >> >> + struct notifier_block *nb) { >> >> >> + unsigned long flags; >> >> >> + int ret; >> >> >> + >> >> >> + spin_lock_irqsave(&gadget->lock, flags); >> >> > >> >> > I find you use so many spin_lock_irqsave, any reasons for that? >> >> > Why mutex_lock can't be used? >> >> > >> >> >> >> The spin_lock_irqsave() can make it as a atomic notifier, that can make sure the >> >> gadget state event can be quickly reported to the user who register a notifier >> >> on the gadget device. Is it OK? >> >> >> > >> > I don't think it is a good reason, spin_lock_irqsave is usually used for protecting >> > data which is accessed at atomic environment. >> > >> >> Yes, we want the notify process is a atomic environment which do not >> want to be interrupted by irq or other things to make the notice can >> be quickly reported to the user. > > No, this is a "slow" event, you don't need to notify anyone under atomic > context, that's crazy. > >> Also i think the notify process is less cost, thus i use the spinlock. Thanks. > > No, use a mutex please, that's the safe thing. This is not > time-critical code at all. > OK, Thanks for your comments and will fix the lock thing. > thanks, > > greg k-h -- Baolin.wang Best Regards -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html