usb: dwc2: host: Fix dereference issue in DDMA completion flow.
authorMinas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Tue, 9 Apr 2024 12:27:54 +0000 (12:27 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Apr 2024 15:29:38 +0000 (17:29 +0200)
Fixed variable dereference issue in DDMA completion flow.

Fixes: b258e4268850 ("usb: dwc2: host: Fix ISOC flow in DDMA mode")
CC: stable@vger.kernel.org
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/linux-usb/2024040834-ethically-rumble-701f@gregkh/T/#m4c4b83bef0ebb4b67fe2e0a7d6466cbb6f416e39
Signed-off-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Link: https://lore.kernel.org/r/cc826d3ef53c934d8e6d98870f17f3cdc3d2755d.1712665387.git.Minas.Harutyunyan@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc2/hcd_ddma.c

index 79582b102c7eda2eb72f6da3c293615cdad50b56..994a78ad084b1c485673ca3c88819d4e752ef2ee 100644 (file)
@@ -867,13 +867,15 @@ static int dwc2_cmpl_host_isoc_dma_desc(struct dwc2_hsotg *hsotg,
        struct dwc2_dma_desc *dma_desc;
        struct dwc2_hcd_iso_packet_desc *frame_desc;
        u16 frame_desc_idx;
-       struct urb *usb_urb = qtd->urb->priv;
+       struct urb *usb_urb;
        u16 remain = 0;
        int rc = 0;
 
        if (!qtd->urb)
                return -EINVAL;
 
+       usb_urb = qtd->urb->priv;
+
        dma_sync_single_for_cpu(hsotg->dev, qh->desc_list_dma + (idx *
                                sizeof(struct dwc2_dma_desc)),
                                sizeof(struct dwc2_dma_desc),