staging: dwc2: fix potential use after free
authorPaul Zimmerman <Paul.Zimmerman@synopsys.com>
Sat, 23 Nov 2013 00:43:46 +0000 (16:43 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Nov 2013 19:59:57 +0000 (11:59 -0800)
dwc2_process_non_isoc_desc() can potentially free the qtd, so null
out the qtd pointer if the call fails so we don't try to access it
later

Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dwc2/hcd_ddma.c

index c7d434519776eb4fdf42fa69a5566639dc6a7e06..72e9788c1a13fdcd8b138c905aa2c6baba2b6c4c 100644 (file)
@@ -1103,8 +1103,10 @@ static void dwc2_complete_non_isoc_xfer_ddma(struct dwc2_hsotg *hsotg,
                for (i = 0; i < qtd->n_desc; i++) {
                        if (dwc2_process_non_isoc_desc(hsotg, chan, chnum, qtd,
                                                       desc_num, halt_status,
-                                                      &xfer_done))
+                                                      &xfer_done)) {
+                               qtd = NULL;
                                break;
+                       }
                        desc_num++;
                }
        }