drivers/usb/gadget/udc/dummy_hcd.c | 4 ++++ 1 file changed, 4 insertions(+)
From: Seungjin Bae <eeodqql09@gmail.com>
The `dummy_hub_control()` function handles USB hub class requests
to the virtual root hub. The `GetPortStatus` case returns -EPIPE for
requests with `wIndex != 1`, since the virtual root hub has only a
single port. However, the `ClearPortFeature` and `SetPortFeature`
cases lack the same check.
Fix this by extending the `wIndex != 1` rejection to both cases,
matching the existing behavior of `GetPortStatus`.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Suggested-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Seungjin Bae <eeodqql09@gmail.com>
---
drivers/usb/gadget/udc/dummy_hcd.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/usb/gadget/udc/dummy_hcd.c b/drivers/usb/gadget/udc/dummy_hcd.c
index f094491b1041..f47903461ed5 100644
--- a/drivers/usb/gadget/udc/dummy_hcd.c
+++ b/drivers/usb/gadget/udc/dummy_hcd.c
@@ -2134,6 +2134,8 @@ static int dummy_hub_control(
case ClearHubFeature:
break;
case ClearPortFeature:
+ if (wIndex != 1)
+ goto error;
switch (wValue) {
case USB_PORT_FEAT_SUSPEND:
if (hcd->speed == HCD_USB3) {
@@ -2248,6 +2250,8 @@ static int dummy_hub_control(
retval = -EPIPE;
break;
case SetPortFeature:
+ if (wIndex != 1)
+ goto error;
switch (wValue) {
case USB_PORT_FEAT_LINK_STATE:
if (hcd->speed != HCD_USB3) {
--
2.43.0
On Mon, May 18, 2026 at 07:43:14PM -0400, pip-izony wrote:
> From: Seungjin Bae <eeodqql09@gmail.com>
>
> The `dummy_hub_control()` function handles USB hub class requests
> to the virtual root hub. The `GetPortStatus` case returns -EPIPE for
> requests with `wIndex != 1`, since the virtual root hub has only a
> single port. However, the `ClearPortFeature` and `SetPortFeature`
> cases lack the same check.
>
> Fix this by extending the `wIndex != 1` rejection to both cases,
> matching the existing behavior of `GetPortStatus`.
>
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
> Suggested-by: Alan Stern <stern@rowland.harvard.edu>
> Signed-off-by: Seungjin Bae <eeodqql09@gmail.com>
> ---
Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
> drivers/usb/gadget/udc/dummy_hcd.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/usb/gadget/udc/dummy_hcd.c b/drivers/usb/gadget/udc/dummy_hcd.c
> index f094491b1041..f47903461ed5 100644
> --- a/drivers/usb/gadget/udc/dummy_hcd.c
> +++ b/drivers/usb/gadget/udc/dummy_hcd.c
> @@ -2134,6 +2134,8 @@ static int dummy_hub_control(
> case ClearHubFeature:
> break;
> case ClearPortFeature:
> + if (wIndex != 1)
> + goto error;
> switch (wValue) {
> case USB_PORT_FEAT_SUSPEND:
> if (hcd->speed == HCD_USB3) {
> @@ -2248,6 +2250,8 @@ static int dummy_hub_control(
> retval = -EPIPE;
> break;
> case SetPortFeature:
> + if (wIndex != 1)
> + goto error;
> switch (wValue) {
> case USB_PORT_FEAT_LINK_STATE:
> if (hcd->speed != HCD_USB3) {
> --
> 2.43.0
>
© 2016 - 2026 Red Hat, Inc.