--- drivers/usb/core/message.c.orig 2004-03-25 18:34:04.000000000 +0100 +++ drivers/usb/core/message.c 2004-03-25 20:53:06.000000000 +0100 @@ -1179,10 +1179,24 @@ configuration, alt->desc.bInterfaceNumber); dev_dbg (&dev->dev, + "initializing %s (config #%d, interface %d)\n", + intf->dev.bus_id, configuration, + intf->cur_altsetting->desc.bInterfaceNumber); + device_initialize (&intf->dev); + } + + /* all interfaces are initialized, we can now + * register them + */ + for (i = 0; i < cp->desc.bNumInterfaces; ++i) { + struct usb_interface *intf = cp->interface[i]; + dev_dbg (&dev->dev, "registering %s (config #%d, interface %d)\n", intf->dev.bus_id, configuration, - alt->desc.bInterfaceNumber); - device_register (&intf->dev); + intf->cur_altsetting->desc.bInterfaceNumber); + if ((ret = device_add (&intf->dev)) < 0) + goto out; + usb_create_driverfs_intf_files (intf); } }