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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]