* Greg KH <[EMAIL PROTECTED]> wrote: > > BUG: at drivers/base/driver.c:187 driver_unregister() > > [<c0105ff9>] show_trace_log_lvl+0x19/0x2e > > [<c01063e2>] show_trace+0x12/0x14 > > [<c01063f8>] dump_stack+0x14/0x16 > > [<c063f7e6>] driver_unregister+0x3d/0x43 > > [<c0488048>] pci_unregister_driver+0x10/0x5f > > [<c1b5f7c7>] slgt_init+0x9b/0x1ca > > [<c1b31a2d>] init+0x15d/0x2bd > > [<c0105bc3>] kernel_thread_helper+0x7/0x10
> Yes, we should allow the ability to call unregister_driver from within > the module_init function. > > But I don't understand what is causing you to see this problem. Who > is holding the reference on the struct device at this point in time? > Is it the fact that userspace has some files open and it hasn't > released them yet? at least in the slgt_init() case the affected codepath is trivial: if ((rc = pci_register_driver(&pci_driver)) < 0) { printk("%s pci_register_driver error=%d\n", driver_name, rc); return rc; } pci_registered = 1; if (!slgt_device_list) { printk("%s no devices found\n",driver_name); pci_unregister_driver(&pci_driver); return -ENODEV; slgt_device_list is NULL because no matching PCI ID is on my system (i dont have this hardware), so the ->probe() function did not get called at all. i.e. a pure pci_register_driver() + pci_unregister_driver() sequence seems to cause a hang. I.e. it seems to be a pure driver-base-core matter. Ingo - 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/