--- drivers/usb/core/message.c.orig	2004-03-25 18:34:04.000000000 +0100
+++ drivers/usb/core/message.c	2004-03-25 18:42:41.267697224 +0100
@@ -1178,10 +1178,17 @@
 				 dev->bus->busnum, dev->devpath,
 				 configuration,
 				 alt->desc.bInterfaceNumber);
+		}
+		
+		/* 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);
+				intf->cur_altsetting->desc.bInterfaceNumber);
 			device_register (&intf->dev);
 			usb_create_driverfs_intf_files (intf);
 		}
