summaryrefslogtreecommitdiff
path: root/drivers/usb/core/message.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-03-26 15:45:22 +0100
committerIngo Molnar <mingo@elte.hu>2009-03-26 15:45:22 +0100
commita5ebc0b1a7843508b375f7ab8a36a628e5c9f372 (patch)
tree04d3ab410e08b4d9174c663dd6bf95611dd16d0a /drivers/usb/core/message.c
parent5ba1ae92b6796b3367152ccd9baa022dde7eed4c (diff)
parent8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84 (diff)
downloadlinux-a5ebc0b1a7843508b375f7ab8a36a628e5c9f372.tar.gz
linux-a5ebc0b1a7843508b375f7ab8a36a628e5c9f372.tar.xz
Merge commit 'v2.6.29' into timers/core
Diffstat (limited to 'drivers/usb/core/message.c')
-rw-r--r--drivers/usb/core/message.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 31fb204f44c6..49e7f56e0d7f 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -653,7 +653,7 @@ int usb_get_descriptor(struct usb_device *dev, unsigned char type,
if (result <= 0 && result != -ETIMEDOUT)
continue;
if (result > 1 && ((u8 *)buf)[1] != type) {
- result = -EPROTO;
+ result = -ENODATA;
continue;
}
break;
@@ -696,8 +696,13 @@ static int usb_get_string(struct usb_device *dev, unsigned short langid,
USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
(USB_DT_STRING << 8) + index, langid, buf, size,
USB_CTRL_GET_TIMEOUT);
- if (!(result == 0 || result == -EPIPE))
- break;
+ if (result == 0 || result == -EPIPE)
+ continue;
+ if (result > 1 && ((u8 *) buf)[1] != USB_DT_STRING) {
+ result = -ENODATA;
+ continue;
+ }
+ break;
}
return result;
}