|
@@ -585,7 +585,6 @@ static void sg_timeout(unsigned long _req)
|
|
|
{
|
|
|
struct usb_sg_request *req = (struct usb_sg_request *) _req;
|
|
|
|
|
|
- req->status = -ETIMEDOUT;
|
|
|
usb_sg_cancel(req);
|
|
|
}
|
|
|
|
|
@@ -616,8 +615,10 @@ static int perform_sglist(
|
|
|
mod_timer(&sg_timer, jiffies +
|
|
|
msecs_to_jiffies(SIMPLE_IO_TIMEOUT));
|
|
|
usb_sg_wait(req);
|
|
|
- del_timer_sync(&sg_timer);
|
|
|
- retval = req->status;
|
|
|
+ if (!del_timer_sync(&sg_timer))
|
|
|
+ retval = -ETIMEDOUT;
|
|
|
+ else
|
|
|
+ retval = req->status;
|
|
|
|
|
|
/* FIXME check resulting data pattern */
|
|
|
|