On Tue, Oct 18, 2005 at 09:55:32PM -0700, Pete Zaitcev wrote: > On Tue, 18 Oct 2005 21:11:45 -0700, Greg KH <[EMAIL PROTECTED]> wrote: > > > > Woops, I assumed that notifier_call_chain had one inside. It was > > > inconceivable to me that you would neglect to lock the chain. > > > > > > Very well, what does prevent a module to call usb_register_notify > > > (on a context of a modprobe) in the same time as khubd is adding > > > a new device and is walking the chain with usb_notify_device_add()? > > > > It looks like it's safe to walk the list and add a new notifier at the > > same time. Take a look at kernel/sys.c::notifier_chain_register() to > > see if I missed something. > > Yes, I looked. It cannot possibly be safe. It may be possibly argued, > that on strictly cache-coherent machines, the *list=n; is safe > versus the list traversal. But what about removal then? > > Also, do you see that rwlock which IS TAKEN FOR WRITE ONLY? > Why? The only explanation is: the author intended read locks > in notifier_call_chain, but either forgot them, or they were > dropped by other person. > > The code style is quite dirty, too. What a crock of fecalia. > Unfortunately, I have to be away from any computers for a couple > of days.
Ick, you are right. I'll go redo my notifier code to get this right. thanks, greg k-h ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ [email protected] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
