From: Alex Dewar <[email protected]>

[ Upstream commit cc34073c6248e9cec801bf690d1455f264d12357 ]

In nbu2ss_eq_queue() memory is allocated with dma_alloc_coherent(),
though, strangely, NULL is passed as the struct device* argument. Pass
the UDC's device instead. Fix up the corresponding call to
dma_free_coherent() in the same way.

Build-tested on x86 only.

Fixes: 33aa8d45a4fe ("staging: emxx_udc: Add Emma Mobile USB Gadget driver")
Reported-by: Dan Carpenter <[email protected]>
Signed-off-by: Alex Dewar <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
 drivers/staging/emxx_udc/emxx_udc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/emxx_udc/emxx_udc.c 
b/drivers/staging/emxx_udc/emxx_udc.c
index 147481bf680c3..a6c893ddbf280 100644
--- a/drivers/staging/emxx_udc/emxx_udc.c
+++ b/drivers/staging/emxx_udc/emxx_udc.c
@@ -2594,7 +2594,7 @@ static int nbu2ss_ep_queue(struct usb_ep *_ep,
 
        if (req->unaligned) {
                if (!ep->virt_buf)
-                       ep->virt_buf = dma_alloc_coherent(NULL, PAGE_SIZE,
+                       ep->virt_buf = dma_alloc_coherent(udc->dev, PAGE_SIZE,
                                                          &ep->phys_buf,
                                                          GFP_ATOMIC | GFP_DMA);
                if (ep->epnum > 0)  {
@@ -3153,7 +3153,7 @@ static int nbu2ss_drv_remove(struct platform_device *pdev)
        for (i = 0; i < NUM_ENDPOINTS; i++) {
                ep = &udc->ep[i];
                if (ep->virt_buf)
-                       dma_free_coherent(NULL, PAGE_SIZE, (void *)ep->virt_buf,
+                       dma_free_coherent(udc->dev, PAGE_SIZE, (void 
*)ep->virt_buf,
                                          ep->phys_buf);
        }
 
-- 
2.25.1



Reply via email to