diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2006-01-19 10:46:27 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-03-20 17:49:58 -0500 |
commit | 6a8e87b23ff4a979bde5451a242466a4b3f9fe7d (patch) | |
tree | 3b3da90cdf42c363fbd6270c58dd21811b8e3004 /drivers/usb/host/ehci-sched.c | |
parent | 1393adb2ebb00a2cd54b293cd7ee71e3376f4e9f (diff) |
[PATCH] USB core and HCDs: don't put_device while atomic
This patch (as640) removes several put_device and the corresponding
get_device calls from the USB core and HCDs. Some of the puts were done
in atomic contexts, and none of them are needed since the core now
guarantees that every endpoint will be disabled and every URB completed
before a USB device is released.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Acked-by: David Brownell <david-b@pacbell.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci-sched.c')
-rw-r--r-- | drivers/usb/host/ehci-sched.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c index 88419c6823a8..90d6900a37f4 100644 --- a/drivers/usb/host/ehci-sched.c +++ b/drivers/usb/host/ehci-sched.c | |||
@@ -1399,7 +1399,7 @@ itd_complete ( | |||
1399 | */ | 1399 | */ |
1400 | 1400 | ||
1401 | /* give urb back to the driver ... can be out-of-order */ | 1401 | /* give urb back to the driver ... can be out-of-order */ |
1402 | dev = usb_get_dev (urb->dev); | 1402 | dev = urb->dev; |
1403 | ehci_urb_done (ehci, urb, regs); | 1403 | ehci_urb_done (ehci, urb, regs); |
1404 | urb = NULL; | 1404 | urb = NULL; |
1405 | 1405 | ||
@@ -1418,7 +1418,6 @@ itd_complete ( | |||
1418 | (stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out"); | 1418 | (stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out"); |
1419 | } | 1419 | } |
1420 | iso_stream_put (ehci, stream); | 1420 | iso_stream_put (ehci, stream); |
1421 | usb_put_dev (dev); | ||
1422 | 1421 | ||
1423 | return 1; | 1422 | return 1; |
1424 | } | 1423 | } |
@@ -1765,7 +1764,7 @@ sitd_complete ( | |||
1765 | */ | 1764 | */ |
1766 | 1765 | ||
1767 | /* give urb back to the driver */ | 1766 | /* give urb back to the driver */ |
1768 | dev = usb_get_dev (urb->dev); | 1767 | dev = urb->dev; |
1769 | ehci_urb_done (ehci, urb, regs); | 1768 | ehci_urb_done (ehci, urb, regs); |
1770 | urb = NULL; | 1769 | urb = NULL; |
1771 | 1770 | ||
@@ -1784,7 +1783,6 @@ sitd_complete ( | |||
1784 | (stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out"); | 1783 | (stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out"); |
1785 | } | 1784 | } |
1786 | iso_stream_put (ehci, stream); | 1785 | iso_stream_put (ehci, stream); |
1787 | usb_put_dev (dev); | ||
1788 | 1786 | ||
1789 | return 1; | 1787 | return 1; |
1790 | } | 1788 | } |