Skip to content

Commit

Permalink
usb: hub: add check for unsupported bus topology
Browse files Browse the repository at this point in the history
We can't allow hubs on the 7th tier as they would allow
devices on the 8th tier.

Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Felipe Balbi authored and Greg Kroah-Hartman committed Jul 21, 2008
1 parent 6deb270 commit 38f3ad5
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
2 changes: 0 additions & 2 deletions drivers/usb/core/devices.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,6 @@
#include "usb.h"
#include "hcd.h"

#define MAX_TOPO_LEVEL 6

/* Define ALLOW_SERIAL_NUMBER if you want to see the serial number of devices */
#define ALLOW_SERIAL_NUMBER

Expand Down
2 changes: 2 additions & 0 deletions drivers/usb/core/hcd.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

#include <linux/rwsem.h>

#define MAX_TOPO_LEVEL 6

/* This file contains declarations of usbcore internals that are mostly
* used or exposed by Host Controller Drivers.
*/
Expand Down
6 changes: 6 additions & 0 deletions drivers/usb/core/hub.c
Original file line number Diff line number Diff line change
Expand Up @@ -1051,6 +1051,12 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
desc = intf->cur_altsetting;
hdev = interface_to_usbdev(intf);

if (hdev->level == MAX_TOPO_LEVEL) {
dev_err(&intf->dev, "Unsupported bus topology: "
"hub nested too deep\n");
return -E2BIG;
}

#ifdef CONFIG_USB_OTG_BLACKLIST_HUB
if (hdev->parent) {
dev_warn(&intf->dev, "ignoring external hub\n");
Expand Down

0 comments on commit 38f3ad5

Please sign in to comment.