Re: [PATCH 5/6] dmaengine: zynqmp_dma: Reject zero-length memcpy transfers

From: Frank Li

Date: Thu Aug 06 2026 - 12:12:53 EST


On Thu, Aug 06, 2026 at 06:00:13PM +0530, Golla Nagendra wrote:
> Zero-length prep_memcpy() needlessly consumed a descriptor slot. Reject
> zero-length memcpy at prep time and document the behaviour.
>
> Signed-off-by: Golla Nagendra <nagendra.golla@xxxxxxx>
> ---

Is it caller problem, which pass down zero len? or are there special usage,
such as memory barrier.

Frank

> drivers/dma/xilinx/zynqmp_dma.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/dma/xilinx/zynqmp_dma.c b/drivers/dma/xilinx/zynqmp_dma.c
> index 2d56ea08ce45..e70874d65123 100644
> --- a/drivers/dma/xilinx/zynqmp_dma.c
> +++ b/drivers/dma/xilinx/zynqmp_dma.c
> @@ -836,7 +836,8 @@ static void zynqmp_dma_synchronize(struct dma_chan *dchan)
> * @len: Transfer length
> * @flags: transfer ack flags
> *
> - * Return: Async transaction descriptor on success and NULL on failure
> + * Return: Async transaction descriptor on success and NULL on failure or
> + * zero length transfer
> */
> static struct dma_async_tx_descriptor *zynqmp_dma_prep_memcpy(
> struct dma_chan *dchan, dma_addr_t dma_dst,
> @@ -851,6 +852,9 @@ static struct dma_async_tx_descriptor *zynqmp_dma_prep_memcpy(
>
> chan = to_chan(dchan);
>
> + if (!len)
> + return NULL;
> +
> desc_cnt = DIV_ROUND_UP(len, ZYNQMP_DMA_MAX_TRANS_LEN);
>
> spin_lock_irqsave(&chan->lock, irqflags);
> --
> 2.43.7
>