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>
This commit is contained in:
Родитель
04cab13293
Коммит
3b79cc2670
|
@ -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,
|
||||
|
|
Загрузка…
Ссылка в новой задаче