kernel/drivers/usb/gadget/udc/fsl_qe_udc.c
.. .. @@ -1950,9 +1950,13 @@ 1950 1950 } else if ((request_type & USB_RECIP_MASK) == USB_RECIP_ENDPOINT) { 1951 1951 /* Get endpoint status */ 1952 1952 int pipe = index & USB_ENDPOINT_NUMBER_MASK; 1953 - struct qe_ep *target_ep = &udc->eps[pipe];1953 + struct qe_ep *target_ep;1954 1954 u16 usep; 1955 1955 1956 + if (pipe >= USB_MAX_ENDPOINTS)1957 + goto stall;1958 + target_ep = &udc->eps[pipe];1959 +1956 1960 /* stall if endpoint doesn't exist */ 1957 1961 if (!target_ep->ep.desc) 1958 1962 goto stall;