diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2007-08-02 15:04:52 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-10-12 17:55:01 -0400 |
commit | d617bc83ff48ebf0df253605529d8b3bef15773a (patch) | |
tree | 15bc0597e795a5dd1cd5c683a052f5a116442ba8 /drivers/usb/core/urb.c | |
parent | 18ea5d00d05fa6300606f0711748016c95fb26dc (diff) |
USB: cleanup for previous patches
This patch (as951) cleans up a few loose ends from earlier patches.
Redundant checks for non-NULL urb->dev are removed, as are checks of
urb->dev->bus (which can never be NULL). Conversely, a check for
non-NULL urb->ep is added to the unlink paths.
A homegrown round-down-to-power-of-2 loop is simplified by using the
ilog2 routine. The comparison in usb_urb_dir_in() is made more
transparent.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core/urb.c')
-rw-r--r-- | drivers/usb/core/urb.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c index 1acca8696bcd..19f5f66c2733 100644 --- a/drivers/usb/core/urb.c +++ b/drivers/usb/core/urb.c | |||
@@ -3,6 +3,7 @@ | |||
3 | #include <linux/bitops.h> | 3 | #include <linux/bitops.h> |
4 | #include <linux/slab.h> | 4 | #include <linux/slab.h> |
5 | #include <linux/init.h> | 5 | #include <linux/init.h> |
6 | #include <linux/log2.h> | ||
6 | #include <linux/usb.h> | 7 | #include <linux/usb.h> |
7 | #include <linux/wait.h> | 8 | #include <linux/wait.h> |
8 | #include "hcd.h" | 9 | #include "hcd.h" |
@@ -441,10 +442,8 @@ int usb_submit_urb(struct urb *urb, gfp_t mem_flags) | |||
441 | default: | 442 | default: |
442 | return -EINVAL; | 443 | return -EINVAL; |
443 | } | 444 | } |
444 | /* power of two? */ | 445 | /* Round down to a power of 2, no more than max */ |
445 | while (max > urb->interval) | 446 | urb->interval = min(max, 1 << ilog2(urb->interval)); |
446 | max >>= 1; | ||
447 | urb->interval = max; | ||
448 | } | 447 | } |
449 | 448 | ||
450 | return usb_hcd_submit_urb(urb, mem_flags); | 449 | return usb_hcd_submit_urb(urb, mem_flags); |
@@ -513,8 +512,10 @@ int usb_unlink_urb(struct urb *urb) | |||
513 | { | 512 | { |
514 | if (!urb) | 513 | if (!urb) |
515 | return -EINVAL; | 514 | return -EINVAL; |
516 | if (!(urb->dev && urb->dev->bus)) | 515 | if (!urb->dev) |
517 | return -ENODEV; | 516 | return -ENODEV; |
517 | if (!urb->ep) | ||
518 | return -EIDRM; | ||
518 | return usb_hcd_unlink_urb(urb, -ECONNRESET); | 519 | return usb_hcd_unlink_urb(urb, -ECONNRESET); |
519 | } | 520 | } |
520 | 521 | ||
@@ -541,7 +542,7 @@ int usb_unlink_urb(struct urb *urb) | |||
541 | void usb_kill_urb(struct urb *urb) | 542 | void usb_kill_urb(struct urb *urb) |
542 | { | 543 | { |
543 | might_sleep(); | 544 | might_sleep(); |
544 | if (!(urb && urb->dev && urb->dev->bus)) | 545 | if (!(urb && urb->dev && urb->ep)) |
545 | return; | 546 | return; |
546 | spin_lock_irq(&urb->lock); | 547 | spin_lock_irq(&urb->lock); |
547 | ++urb->reject; | 548 | ++urb->reject; |