From b28b183d31ad35134993139f147a926cd3d775fb Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 18 Jul 2007 10:58:02 -0700 Subject: [PATCH] --- yaml --- r: 61951 b: refs/heads/master c: 3fc3e8269fa5c1f35b518dbe18dc48acef3c7684 h: refs/heads/master i: 61949: ec8c7845a45825635854bf27d521c27e24e7cfe3 61947: 2df239302ef3dc5aa54b9066e270783947676c71 61943: b61eb7eece3c4a38b765183079d03663d940a5ca 61935: eb4def7f1f2c7a92d00949d808978157d2160c8d 61919: 4f84390fd1f143061766eee08f1127618f9cdf66 61887: cd0289944d327dead328e71e381598ab0f472498 61823: 168bb8c6a49be5ab7798423b0f5e56232fb0e29f 61695: 9379976b5155cf953a97131eb887ebd54b6c723a 61439: aaeee93866c1bace2aa06b5b76955ea24433af55 v: v3 --- [refs] | 2 +- trunk/drivers/usb/core/message.c | 34 +++++++++++++++++--------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/[refs] b/[refs] index 12a053a80a29..1d1a807f8694 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b44cd112a0400d5eb381f3c1a1e7a6925911c835 +refs/heads/master: 3fc3e8269fa5c1f35b518dbe18dc48acef3c7684 diff --git a/trunk/drivers/usb/core/message.c b/trunk/drivers/usb/core/message.c index 530e854961ce..25f63f1096b4 100644 --- a/trunk/drivers/usb/core/message.c +++ b/trunk/drivers/usb/core/message.c @@ -34,13 +34,14 @@ static int usb_start_wait_urb(struct urb *urb, int timeout, int *actual_length) { struct completion done; unsigned long expire; - int status; + int retval; + int status = urb->status; init_completion(&done); urb->context = &done; urb->actual_length = 0; - status = usb_submit_urb(urb, GFP_NOIO); - if (unlikely(status)) + retval = usb_submit_urb(urb, GFP_NOIO); + if (unlikely(retval)) goto out; expire = timeout ? msecs_to_jiffies(timeout) : MAX_SCHEDULE_TIMEOUT; @@ -55,15 +56,15 @@ static int usb_start_wait_urb(struct urb *urb, int timeout, int *actual_length) urb->transfer_buffer_length); usb_kill_urb(urb); - status = urb->status == -ENOENT ? -ETIMEDOUT : urb->status; + retval = status == -ENOENT ? -ETIMEDOUT : status; } else - status = urb->status; + retval = status; out: if (actual_length) *actual_length = urb->actual_length; usb_free_urb(urb); - return status; + return retval; } /*-------------------------------------------------------------------*/ @@ -250,6 +251,7 @@ static void sg_clean (struct usb_sg_request *io) static void sg_complete (struct urb *urb) { struct usb_sg_request *io = urb->context; + int status = urb->status; spin_lock (&io->lock); @@ -265,21 +267,21 @@ static void sg_complete (struct urb *urb) */ if (io->status && (io->status != -ECONNRESET - || urb->status != -ECONNRESET) + || status != -ECONNRESET) && urb->actual_length) { dev_err (io->dev->bus->controller, "dev %s ep%d%s scatterlist error %d/%d\n", io->dev->devpath, usb_pipeendpoint (urb->pipe), usb_pipein (urb->pipe) ? "in" : "out", - urb->status, io->status); + status, io->status); // BUG (); } - if (io->status == 0 && urb->status && urb->status != -ECONNRESET) { - int i, found, status; + if (io->status == 0 && status && status != -ECONNRESET) { + int i, found, retval; - io->status = urb->status; + io->status = status; /* the previous urbs, and this one, completed already. * unlink pending urbs so they won't rx/tx bad data. @@ -290,13 +292,13 @@ static void sg_complete (struct urb *urb) if (!io->urbs [i] || !io->urbs [i]->dev) continue; if (found) { - status = usb_unlink_urb (io->urbs [i]); - if (status != -EINPROGRESS - && status != -ENODEV - && status != -EBUSY) + retval = usb_unlink_urb (io->urbs [i]); + if (retval != -EINPROGRESS && + retval != -ENODEV && + retval != -EBUSY) dev_err (&io->dev->dev, "%s, unlink --> %d\n", - __FUNCTION__, status); + __FUNCTION__, retval); } else if (urb == io->urbs [i]) found = 1; }