Commit 06b84e8a authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman

USB: remove "locktree" routine from the hub driver

This patch (as892) removes the "locktree" routine from the hub driver.
It currently is used in only one place, by a single kernel thread;
hence it isn't doing any good.
Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent f3fd77cd
...@@ -982,49 +982,6 @@ hub_ioctl(struct usb_interface *intf, unsigned int code, void *user_data) ...@@ -982,49 +982,6 @@ hub_ioctl(struct usb_interface *intf, unsigned int code, void *user_data)
} }
/* grab device/port lock, returning index of that port (zero based).
* protects the upstream link used by this device from concurrent
* tree operations like suspend, resume, reset, and disconnect, which
* apply to everything downstream of a given port.
*/
static int locktree(struct usb_device *udev)
{
int t;
struct usb_device *hdev;
if (!udev)
return -ENODEV;
/* root hub is always the first lock in the series */
hdev = udev->parent;
if (!hdev) {
usb_lock_device(udev);
return 0;
}
/* on the path from root to us, lock everything from
* top down, dropping parent locks when not needed
*/
t = locktree(hdev);
if (t < 0)
return t;
/* everything is fail-fast once disconnect
* processing starts
*/
if (udev->state == USB_STATE_NOTATTACHED) {
usb_unlock_device(hdev);
return -ENODEV;
}
/* when everyone grabs locks top->bottom,
* non-overlapping work may be concurrent
*/
usb_lock_device(udev);
usb_unlock_device(hdev);
return udev->portnum;
}
static void recursively_mark_NOTATTACHED(struct usb_device *udev) static void recursively_mark_NOTATTACHED(struct usb_device *udev)
{ {
int i; int i;
...@@ -2594,10 +2551,7 @@ static void hub_events(void) ...@@ -2594,10 +2551,7 @@ static void hub_events(void)
/* Lock the device, then check to see if we were /* Lock the device, then check to see if we were
* disconnected while waiting for the lock to succeed. */ * disconnected while waiting for the lock to succeed. */
if (locktree(hdev) < 0) { usb_lock_device(hdev);
usb_put_intf(intf);
continue;
}
if (hub != usb_get_intfdata(intf)) if (hub != usb_get_intfdata(intf))
goto loop; goto loop;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment