summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorOliver Neukum <oneukum@suse.de>2007-08-16 16:06:06 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2007-08-22 14:27:58 -0700
commit3b79cc26708bcc476d4e4bf3846032fa3a1eeb85 (patch)
tree31a2c50165b76666ac529d5b2f3e87b8f5af8fef /drivers/usb
parent04cab1329336d4577d6638360c905e360934b425 (diff)
downloadop-kernel-dev-3b79cc26708bcc476d4e4bf3846032fa3a1eeb85.zip
op-kernel-dev-3b79cc26708bcc476d4e4bf3846032fa3a1eeb85.tar.gz
USB: unkill cxacru atm driver
it seems like you overdid it a bit in your quest to clean up the use of urb->status. In this driver you read it the first thing, which means that you are in a race against URB completion you'll usually lose, returning -EINPROGRESS. This kills the driver. Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/atm/cxacru.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c
index 02c52f8..a73e714 100644
--- a/drivers/usb/atm/cxacru.c
+++ b/drivers/usb/atm/cxacru.c
@@ -456,7 +456,6 @@ static int cxacru_start_wait_urb(struct urb *urb, struct completion *done,
int* actual_length)
{
struct timer_list timer;
- int status = urb->status;
init_timer(&timer);
timer.expires = jiffies + msecs_to_jiffies(CMD_TIMEOUT);
@@ -468,7 +467,7 @@ static int cxacru_start_wait_urb(struct urb *urb, struct completion *done,
if (actual_length)
*actual_length = urb->actual_length;
- return status;
+ return urb->status; /* must read status after completion */
}
static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm,
OpenPOWER on IntegriCloud