On Thu, Jun 22, 2006 at 05:32:15PM -0700, Andrew Morton wrote: > Greg KH <[EMAIL PROTECTED]> wrote: > > > > I would think it's something new too, as I did change that very line > > that oopsed. That's why I found it odd that I couldn't reproduce it > > anymore. > > device_destroy() looks wrong. It alters the class->devices list outside > its lock. > > --- 25/drivers/base/core.c~device_destroy-locking-fix Thu Jun 22 17:29:07 2006 > +++ 25-akpm/drivers/base/core.c Thu Jun 22 17:29:34 2006 > @@ -632,14 +632,13 @@ void device_destroy(struct class *class, > list_for_each_entry(dev_tmp, &class->devices, node) { > if (dev_tmp->devt == devt) { > dev = dev_tmp; > + list_del_init(&dev->node); > break; > } > } > up(&class->sem); > > - if (dev) { > - list_del_init(&dev->node); > + if (dev) > device_unregister(dev); > - } > } > EXPORT_SYMBOL_GPL(device_destroy); > > That won't be it though.
No, and that function doesn't get called for the usb endpoints, it goes through a different path, that's the problem... I think I've found it now, let me reboot a bunch... thanks, greg k-h Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel