]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - drivers/usb/core/port.c
usb: port: Don't try to peer unused USB ports based on location
[thirdparty/linux.git] / drivers / usb / core / port.c
index c628c1abc90711cb9b8e652a0d903a6359c968bc..4d63496f98b6c45074eee270db26c53b4019dac6 100644 (file)
@@ -573,7 +573,7 @@ static int match_location(struct usb_device *peer_hdev, void *p)
        struct usb_hub *peer_hub = usb_hub_to_struct_hub(peer_hdev);
        struct usb_device *hdev = to_usb_device(port_dev->dev.parent->parent);
 
-       if (!peer_hub)
+       if (!peer_hub || port_dev->connect_type == USB_PORT_NOT_USED)
                return 0;
 
        hcd = bus_to_hcd(hdev->bus);
@@ -584,7 +584,8 @@ static int match_location(struct usb_device *peer_hdev, void *p)
 
        for (port1 = 1; port1 <= peer_hdev->maxchild; port1++) {
                peer = peer_hub->ports[port1 - 1];
-               if (peer && peer->location == port_dev->location) {
+               if (peer && peer->connect_type != USB_PORT_NOT_USED &&
+                   peer->location == port_dev->location) {
                        link_peers_report(port_dev, peer);
                        return 1; /* done */
                }