]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
usb: gadget: dummy_hcd: Reject hub port requests for non-existent ports
authorSeungjin Bae <eeodqql09@gmail.com>
Mon, 18 May 2026 23:43:14 +0000 (19:43 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 22 May 2026 09:13:31 +0000 (11:13 +0200)
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")
Cc: stable <stable@kernel.org>
Suggested-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Seungjin Bae <eeodqql09@gmail.com>
Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
Link: https://patch.msgid.link/20260518234314.1889396-1-eeodqql09@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/udc/dummy_hcd.c

index f094491b1041ae84a11a74b06d99b73486f69691..f47903461ed5ca2744d4b48409bd6168e5615a2c 100644 (file)
@@ -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) {