mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
f3fd77cd2f
commit
06b84e8adc
1 changed files with 1 additions and 47 deletions
|
@ -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)
|
||||||
|
|
||||||
/* 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;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue