Commit c6ee78fc authored by Thomas Fourier's avatar Thomas Fourier Committed by Vinod Koul
Browse files

dmaengine: nbpfaxi: Add missing check after DMA map



The DMA map functions can fail and should be tested for errors.
If the mapping fails, unmap and return an error.

Fixes: b45b262c ("dmaengine: add a driver for AMBA AXI NBPF DMAC IP cores")
Signed-off-by: default avatarThomas Fourier <fourier.thomas@gmail.com>
Link: https://lore.kernel.org/r/20250707075752.28674-2-fourier.thomas@gmail.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 60095aca
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -711,6 +711,9 @@ static int nbpf_desc_page_alloc(struct nbpf_channel *chan)
		list_add_tail(&ldesc->node, &lhead);
		ldesc->hwdesc_dma_addr = dma_map_single(dchan->device->dev,
					hwdesc, sizeof(*hwdesc), DMA_TO_DEVICE);
		if (dma_mapping_error(dchan->device->dev,
				      ldesc->hwdesc_dma_addr))
			goto unmap_error;

		dev_dbg(dev, "%s(): mapped 0x%p to %pad\n", __func__,
			hwdesc, &ldesc->hwdesc_dma_addr);
@@ -737,6 +740,16 @@ static int nbpf_desc_page_alloc(struct nbpf_channel *chan)
	spin_unlock_irq(&chan->lock);

	return ARRAY_SIZE(dpage->desc);

unmap_error:
	while (i--) {
		ldesc--; hwdesc--;

		dma_unmap_single(dchan->device->dev, ldesc->hwdesc_dma_addr,
				 sizeof(hwdesc), DMA_TO_DEVICE);
	}

	return -ENOMEM;
}

static void nbpf_desc_put(struct nbpf_desc *desc)