]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
usb: dwc3: core: fix memory leaks in event buffer cleanup
authorGurumoorthy Santhakumar <gurumoorthy.santhakumar@oss.qualcomm.com>
Thu, 16 Apr 2026 05:55:01 +0000 (11:25 +0530)
committerMarek Vasut <marek.vasut+usb@mailbox.org>
Fri, 17 Apr 2026 13:57:19 +0000 (15:57 +0200)
In dwc3_free_one_event_buffer(), only the DMA buffer (evt->buf) was
being freed via dma_free_coherent(), but the evt structure itself was
never explicitly freed, causing a memory leak.

In dwc3_free_event_buffers(), the ev_buffs pointer array allocated
with memalign() was never freed after iterating and releasing all
individual event buffers, causing another memory leak.

Fix both leaks by freeing the evt struct in
dwc3_free_one_event_buffer() and freeing dwc->ev_buffs in
dwc3_free_event_buffers() after all entries have been released.

Signed-off-by: Gurumoorthy Santhakumar <gurumoorthy.santhakumar@oss.qualcomm.com>
Reviewed-by: Marek Vasut <marek.vasut+usb@mailbox.org>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
drivers/usb/dwc3/core.c

index 6f22b9232bada9266b6179a8c3e045045bfc54b5..65c4d1a4e6f41fead44f49bf1dc184d8b1cd8fd0 100644 (file)
@@ -206,6 +206,7 @@ static void dwc3_free_one_event_buffer(struct dwc3 *dwc,
                struct dwc3_event_buffer *evt)
 {
        dma_free_coherent(evt->buf);
+       free(evt);
 }
 
 /**
@@ -252,6 +253,8 @@ static void dwc3_free_event_buffers(struct dwc3 *dwc)
                if (evt)
                        dwc3_free_one_event_buffer(dwc, evt);
        }
+
+       free(dwc->ev_buffs);
 }
 
 /**