Commit 1ca61060 authored by Xu Yilun's avatar Xu Yilun Committed by Greg Kroah-Hartman
Browse files

fpga: zynq_fpga: Fix the wrong usage of dma_map_sgtable()



dma_map_sgtable() returns only 0 or the error code. Read sgt->nents to
get the number of mapped segments.

Fixes: 37e00703 ("zynq_fpga: use sgtable-based scatterlist wrappers")
Reported-by: default avatarPavel Pisa <pisa@fel.cvut.cz>
Closes: https://lore.kernel.org/linux-fpga/202508041548.22955.pisa@fel.cvut.cz/


Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Reviewed-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarXu Yilun <yilun.xu@linux.intel.com>
Tested-by: default avatarPavel Pisa <pisa@fel.cvut.cz>
Link: https://lore.kernel.org/r/20250806070605.1920909-2-yilun.xu@linux.intel.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c17b750b
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -405,12 +405,12 @@ static int zynq_fpga_ops_write(struct fpga_manager *mgr, struct sg_table *sgt)
		}
	}

	priv->dma_nelms =
	    dma_map_sgtable(mgr->dev.parent, sgt, DMA_TO_DEVICE, 0);
	if (priv->dma_nelms == 0) {
	err = dma_map_sgtable(mgr->dev.parent, sgt, DMA_TO_DEVICE, 0);
	if (err) {
		dev_err(&mgr->dev, "Unable to DMA map (TO_DEVICE)\n");
		return -ENOMEM;
		return err;
	}
	priv->dma_nelms = sgt->nents;

	/* enable clock */
	err = clk_enable(priv->clk);