/* release only after device_add() */ if (klist_node_attached(&dev->knode_bus)) { 
/* don't release if the interface hasn't been added yet */ if (device_is_registered(dev)) { 
void usb_driver_release_interface(struct usb_driver *driver,					struct usb_interface *iface){	struct device *dev = &iface->dev;	/* this should never happen, don't release something that's not ours */	if (!dev->driver || dev->driver != &driver->driver)		return;	/* don't release from within disconnect() */	if (iface->condition != USB_INTERFACE_BOUND)		return;	/* release only after device_add() */	if (klist_node_attached(&dev->knode_bus)) {		iface->condition = USB_INTERFACE_UNBINDING;		device_release_driver(dev);	}	dev->driver = NULL;	usb_set_intfdata(iface, NULL);	iface->condition = USB_INTERFACE_UNBOUND;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/d305ef5d2a4e77bfa66160513f4a7494126a506b/usb.c/buggy/drivers/usb/core/usb.c