diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2006-06-19 15:12:38 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-07-12 16:03:22 -0700 |
commit | b40b7a905ce57608ca93c5032d5ab1f5508d2f11 (patch) | |
tree | 90a903dd48e9b9e3908f0a506704d039011bb204 | |
parent | eecd11ed47c8c9bd8e7e3dff35baccae18dd0d84 (diff) |
[PATCH] USB hub: don't return status > 0 from resume
finish_device_resume() in the hub driver isn't careful always to return
a negative code in all the error pathways. It also doesn't return 0 in
all the success pathways. This patch (as724) fixes the behavior.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/usb/core/hub.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 875596e98e4..41531bba432 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1790,7 +1790,10 @@ static int finish_device_resume(struct usb_device *udev) * and device drivers will know about any resume quirks. */ status = usb_get_status(udev, USB_RECIP_DEVICE, 0, &devstatus); - if (status < 2) + if (status >= 0) + status = (status == 2 ? 0 : -ENODEV); + + if (status) dev_dbg(&udev->dev, "gone after usb resume? status %d\n", status); |