usb: dwc2: host: ensure qtb exists before dereferencing it
authorGregory Herrero <gregory.herrero@intel.com>
Wed, 29 Apr 2015 20:09:20 +0000 (22:09 +0200)
committerFelipe Balbi <balbi@ti.com>
Wed, 29 Apr 2015 20:20:22 +0000 (15:20 -0500)
dwc2_hc_nak_intr could be called with a NULL qtd.
Ensure qtd exists before dereferencing it to avoid kernel panic.
This happens when using usb to ethernet adapter.

Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Gregory Herrero <gregory.herrero@intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc2/hcd_intr.c

index 6ea8eb6899f4d0716209b935a92e9366193703fa..4cc95df4262d27eed328ea904b347e4ee520351f 100644 (file)
@@ -1208,6 +1208,16 @@ static void dwc2_hc_nak_intr(struct dwc2_hsotg *hsotg,
                             struct dwc2_host_chan *chan, int chnum,
                             struct dwc2_qtd *qtd)
 {
+       if (!qtd) {
+               dev_dbg(hsotg->dev, "%s: qtd is NULL\n", __func__);
+               return;
+       }
+
+       if (!qtd->urb) {
+               dev_dbg(hsotg->dev, "%s: qtd->urb is NULL\n", __func__);
+               return;
+       }
+
        if (dbg_hc(chan))
                dev_vdbg(hsotg->dev, "--Host Channel %d Interrupt: NAK Received--\n",
                         chnum);