[PATCH] usbcore: fix check_ctrlrecip to allow control transfers in state ADDRESS

From: Horst Schirmeier
Date: Fri Mar 10 2006 - 20:40:30 EST


check_ctrlrecip() disallows any control transfers if the device is
deconfigured (in configuration 0, ie. state ADDRESS). This for example
makes it impossible to read the device descriptors without configuring
the device, although most standard device requests are allowed in this
state by the spec. This patch allows control transfers for the ADDRESS
state, too.

Signed-off-by: Horst Schirmeier <horst@xxxxxxxxxxxxxx>

---

diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 2b68998..3461476 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -498,7 +498,8 @@ static int check_ctrlrecip(struct dev_st
{
int ret = 0;

- if (ps->dev->state != USB_STATE_CONFIGURED)
+ if (ps->dev->state != USB_STATE_ADDRESS
+ && ps->dev->state != USB_STATE_CONFIGURED)
return -EHOSTUNREACH;
if (USB_TYPE_VENDOR == (USB_TYPE_MASK & requesttype))
return 0;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/