usb: gadget: Correct NULL pointer checking in fsl gadget
authorNikhil Badola <nikhil.badola@freescale.com>
Mon, 21 Oct 2019 10:21:53 +0000 (18:21 +0800)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 22 Oct 2019 07:37:20 +0000 (10:37 +0300)
Correct NULL pointer checking for endpoint descriptor
before it gets dereferenced

Signed-off-by: Nikhil Badola <nikhil.badola@freescale.com>
Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
Reviewed-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/gadget/udc/fsl_udc_core.c

index 1e78ef3..334b160 100644 (file)
@@ -1052,10 +1052,11 @@ static int fsl_ep_fifo_status(struct usb_ep *_ep)
        u32 bitmask;
        struct ep_queue_head *qh;
 
-       ep = container_of(_ep, struct fsl_ep, ep);
-       if (!_ep || (!ep->ep.desc && ep_index(ep) != 0))
+       if (!_ep || _ep->desc || !(_ep->desc->bEndpointAddress&0xF))
                return -ENODEV;
 
+       ep = container_of(_ep, struct fsl_ep, ep);
+
        udc = (struct fsl_udc *)ep->udc;
 
        if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN)