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

Reply via email to