diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 0c17d5a..ec6c97d 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -37,10 +37,6 @@
 #endif
 #endif
 
-struct usb_hub_port {
-	void			*port_owner;
-};
-
 struct usb_hub {
 	struct device		*intfdev;	/* the "interface" device */
 	struct usb_device	*hdev;
@@ -85,7 +81,7 @@
 	u8			indicator[USB_MAXCHILDREN];
 	struct delayed_work	leds;
 	struct delayed_work	init_work;
-	struct usb_hub_port	*port_data;
+	void			**port_owners;
 };
 
 static inline int hub_is_superspeed(struct usb_device *hdev)
@@ -1053,9 +1049,8 @@
 
 	hdev->children = kzalloc(hdev->maxchild *
 				sizeof(struct usb_device *), GFP_KERNEL);
-	hub->port_data = kzalloc(hdev->maxchild * sizeof(struct usb_hub_port),
-			GFP_KERNEL);
-	if (!hub->port_data || !hdev->children) {
+	hub->port_owners = kzalloc(hdev->maxchild * sizeof(void *), GFP_KERNEL);
+	if (!hdev->children || !hub->port_owners) {
 		ret = -ENOMEM;
 		goto fail;
 	}
@@ -1310,7 +1305,7 @@
 
 	usb_free_urb(hub->urb);
 	kfree(hdev->children);
-	kfree(hub->port_data);
+	kfree(hub->port_owners);
 	kfree(hub->descriptor);
 	kfree(hub->status);
 	kfree(hub->buffer);
@@ -1442,7 +1437,7 @@
 	/* This assumes that devices not managed by the hub driver
 	 * will always have maxchild equal to 0.
 	 */
-	*ppowner = &(hdev_to_hub(hdev)->port_data[port1 - 1].port_owner);
+	*ppowner = &(hdev_to_hub(hdev)->port_owners[port1 - 1]);
 	return 0;
 }
 
@@ -1477,14 +1472,16 @@
 
 void usb_hub_release_all_ports(struct usb_device *hdev, void *owner)
 {
-	struct usb_hub *hub = hdev_to_hub(hdev);
 	int n;
+	void **powner;
 
-	for (n = 0; n < hdev->maxchild; n++) {
-		if (hub->port_data[n].port_owner == owner)
-			hub->port_data[n].port_owner = NULL;
+	n = find_port_owner(hdev, 1, &powner);
+	if (n == 0) {
+		for (; n < hdev->maxchild; (++n, ++powner)) {
+			if (*powner == owner)
+				*powner = NULL;
+		}
 	}
-
 }
 
 /* The caller must hold udev's lock */
@@ -1495,7 +1492,7 @@
 	if (udev->state == USB_STATE_NOTATTACHED || !udev->parent)
 		return false;
 	hub = hdev_to_hub(udev->parent);
-	return !!hub->port_data[udev->portnum - 1].port_owner;
+	return !!hub->port_owners[udev->portnum - 1];
 }
 
 
