Re: [PATCH 5/6] dmaengine: zynqmp_dma: Reject zero-length memcpy transfers
Frank Li <[email protected]>
| Newsgroups | org.kernel.vger.dmaengine,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <anSuuPHDh2lcAhBL@SMW015318> |
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 <[email protected]> > --- 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 >