Commit 37e00703 authored by Marek Szyprowski's avatar Marek Szyprowski Committed by Xu Yilun
Browse files

zynq_fpga: use sgtable-based scatterlist wrappers



Use common wrappers operating directly on the struct sg_table objects to
fix incorrect use of statterlists related calls. dma_unmap_sg() function
has to be called with the number of elements originally passed to the
dma_map_sg() function, not the one returned in sgtable's nents.

CC: stable@vger.kernel.org
Fixes: 425902f5 ("fpga zynq: Use the scatterlist interface")
Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Reviewed-by: default avatarXu Yilun <yilun.xu@intel.com>
Link: https://lore.kernel.org/r/20250616120932.1090614-1-m.szyprowski@samsung.com


Signed-off-by: default avatarXu Yilun <yilun.xu@linux.intel.com>
parent 19272b37
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -406,7 +406,7 @@ static int zynq_fpga_ops_write(struct fpga_manager *mgr, struct sg_table *sgt)
	}

	priv->dma_nelms =
	    dma_map_sg(mgr->dev.parent, sgt->sgl, sgt->nents, DMA_TO_DEVICE);
	    dma_map_sgtable(mgr->dev.parent, sgt, DMA_TO_DEVICE, 0);
	if (priv->dma_nelms == 0) {
		dev_err(&mgr->dev, "Unable to DMA map (TO_DEVICE)\n");
		return -ENOMEM;
@@ -478,7 +478,7 @@ static int zynq_fpga_ops_write(struct fpga_manager *mgr, struct sg_table *sgt)
	clk_disable(priv->clk);

out_free:
	dma_unmap_sg(mgr->dev.parent, sgt->sgl, sgt->nents, DMA_TO_DEVICE);
	dma_unmap_sgtable(mgr->dev.parent, sgt, DMA_TO_DEVICE, 0);
	return err;
}