Hi, this adds module usage count handling during probe and disconnect to the usb core. It applies to 2.5.1 and is now in the smallest possible form. I did not go at the old style probe, as it shoulde be IMO removed.
Greg, please apply. Regards Oliver --- include/linux/usb.h.alt Tue Dec 18 11:07:27 2001 +++ include/linux/usb.h Tue Dec 18 11:39:20 2001 @@ -514,6 +514,8 @@ void *handle /* as returned by probe() */ ); + struct module *module; + struct list_head driver_list; struct file_operations *fops; --- drivers/usb/usb.c.alt Wed Dec 19 10:15:34 2001 +++ drivers/usb/usb.c Wed Dec 19 10:19:03 2001 @@ -148,12 +148,16 @@ struct usb_interface *interface = &dev->actconfig->interface[i]; if (interface->driver == driver) { - down(&driver->serialize); + if (driver->module) + __MOD_INC_USE_COUNT(driver->module); + down(&driver->serialize); driver->disconnect(dev, interface->private_data); up(&driver->serialize); /* if driver->disconnect didn't release the interface */ if (interface->driver) usb_driver_release_interface(driver, interface); + if (driver->module) + __MOD_DEC_USE_COUNT(driver->module); /* * This will go through the list looking for another * driver that can handle the device @@ -785,9 +789,13 @@ interface->act_altsetting = i; id = usb_match_id(dev, interface, id); if (id) { + if (driver->module) + __MOD_INC_USE_COUNT(driver->module); down(&driver->serialize); private = driver->probe(dev,ifnum,id); up(&driver->serialize); + if (driver->module) + __MOD_DEC_USE_COUNT(driver->module); if (private != NULL) break; } @@ -1883,12 +1891,16 @@ struct usb_interface *interface = &dev->actconfig->interface[i]; struct usb_driver *driver = interface->driver; if (driver) { + if (driver->module) + __MOD_INC_USE_COUNT(driver->module); down(&driver->serialize); driver->disconnect(dev, interface->private_data); up(&driver->serialize); /* if driver->disconnect didn't release the interface */ if (interface->driver) usb_driver_release_interface(driver, interface); + if (driver->module) + __MOD_DEC_USE_COUNT(driver->module); } } } _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel