Re: [PATCH] usb: gadget: dummy_hcd: Reject hub port requests for non-existent ports
From: Alan Stern
Date: Mon May 18 2026 - 22:17:22 EST
On Mon, May 18, 2026 at 07:43:14PM -0400, pip-izony wrote:
> From: Seungjin Bae <eeodqql09@xxxxxxxxx>
>
> 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@xxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Seungjin Bae <eeodqql09@xxxxxxxxx>
> ---
Reviewed-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> 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
>