|
@@ -413,8 +413,13 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent,
|
|
|
} else {
|
|
|
snprintf(dev->devpath, sizeof dev->devpath,
|
|
|
"%s.%d", parent->devpath, port1);
|
|
|
- dev->route = parent->route +
|
|
|
- (port1 << ((parent->level - 1)*4));
|
|
|
+ /* Route string assumes hubs have less than 16 ports */
|
|
|
+ if (port1 < 15)
|
|
|
+ dev->route = parent->route +
|
|
|
+ (port1 << ((parent->level - 1)*4));
|
|
|
+ else
|
|
|
+ dev->route = parent->route +
|
|
|
+ (15 << ((parent->level - 1)*4));
|
|
|
}
|
|
|
|
|
|
dev->dev.parent = &parent->dev;
|