]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
usb: host: max3421: Reject hub port requests for non-existent ports
authorSeungjin Bae <eeodqql09@gmail.com>
Mon, 18 May 2026 22:49:02 +0000 (18:49 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 22 May 2026 09:35:18 +0000 (11:35 +0200)
The `max3421_hub_control()` function handles USB hub class requests
to the virtual root hub. The `GetPortStatus` case correctly rejects
requests with `index != 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 `index != 1` rejection to both cases,
matching the existing behavior of `GetPortStatus`.

Fixes: 2d53139f3162 ("Add support for using a MAX3421E chip as a host driver.")
Suggested-by: Alan Stern <stern@rowland.harvard.edu>
Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Seungjin Bae <eeodqql09@gmail.com>
Link: https://patch.msgid.link/20260518224901.1887013-3-eeodqql09@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/max3421-hcd.c

index 3d6b351dcb1a2814188bd301b21683b461c69289..73e76d0e69738560d99c98ab06217fc7079c0d67 100644 (file)
@@ -1685,6 +1685,8 @@ max3421_hub_control(struct usb_hcd *hcd, u16 type_req, u16 value, u16 index,
        case ClearHubFeature:
                break;
        case ClearPortFeature:
+               if (index != 1)
+                       goto error;
                switch (value) {
                case USB_PORT_FEAT_SUSPEND:
                        break;
@@ -1728,6 +1730,8 @@ max3421_hub_control(struct usb_hcd *hcd, u16 type_req, u16 value, u16 index,
                break;
 
        case SetPortFeature:
+               if (index != 1)
+                       goto error;
                switch (value) {
                case USB_PORT_FEAT_LINK_STATE:
                case USB_PORT_FEAT_U1_TIMEOUT: