diff options
-rw-r--r-- | drivers/usb/musb/musb_gadget_ep0.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/usb/musb/musb_gadget_ep0.c b/drivers/usb/musb/musb_gadget_ep0.c index 18da4873e52e..91a5027b5c1f 100644 --- a/drivers/usb/musb/musb_gadget_ep0.c +++ b/drivers/usb/musb/musb_gadget_ep0.c | |||
@@ -89,15 +89,19 @@ static int service_tx_status_request( | |||
89 | } | 89 | } |
90 | 90 | ||
91 | is_in = epnum & USB_DIR_IN; | 91 | is_in = epnum & USB_DIR_IN; |
92 | if (is_in) { | 92 | epnum &= 0x0f; |
93 | epnum &= 0x0f; | 93 | if (epnum >= MUSB_C_NUM_EPS) { |
94 | handled = -EINVAL; | ||
95 | break; | ||
96 | } | ||
97 | |||
98 | if (is_in) | ||
94 | ep = &musb->endpoints[epnum].ep_in; | 99 | ep = &musb->endpoints[epnum].ep_in; |
95 | } else { | 100 | else |
96 | ep = &musb->endpoints[epnum].ep_out; | 101 | ep = &musb->endpoints[epnum].ep_out; |
97 | } | ||
98 | regs = musb->endpoints[epnum].regs; | 102 | regs = musb->endpoints[epnum].regs; |
99 | 103 | ||
100 | if (epnum >= MUSB_C_NUM_EPS || !ep->desc) { | 104 | if (!ep->desc) { |
101 | handled = -EINVAL; | 105 | handled = -EINVAL; |
102 | break; | 106 | break; |
103 | } | 107 | } |