Re: [PATCHv2] dmaengine: idma64: use kzalloc_flex
From: Frank Li
Date: Mon Mar 30 2026 - 12:41:30 EST
On Fri, Mar 20, 2026 at 08:49:31PM -0700, Rosen Penev wrote:
> Simplifies allocations by using a flexible array member in this struct.
>
> Remove idma64_alloc_desc. It now offers no readability advantages in
> this single usage.
>
> Add __counted_by to get extra runtime analysis.
>
> Apply the exact same treatment to struct idma64_dma and devm_kzalloc.
>
> Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
> ---
> v2: allocate with GFP_NOWAIT. Was mistakenly removed.
> drivers/dma/idma64.c | 30 ++++--------------------------
> drivers/dma/idma64.h | 4 ++--
> 2 files changed, 6 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/dma/idma64.c b/drivers/dma/idma64.c
> index 5fcd1befc92d..d914f50ec309 100644
> --- a/drivers/dma/idma64.c
> +++ b/drivers/dma/idma64.c
> @@ -192,23 +192,6 @@ static irqreturn_t idma64_irq(int irq, void *dev)
>
> /* ---------------------------------------------------------------------- */
>
> -static struct idma64_desc *idma64_alloc_desc(unsigned int ndesc)
> -{
> - struct idma64_desc *desc;
> -
> - desc = kzalloc_obj(*desc, GFP_NOWAIT);
> - if (!desc)
> - return NULL;
> -
> - desc->hw = kzalloc_objs(*desc->hw, ndesc, GFP_NOWAIT);
> - if (!desc->hw) {
> - kfree(desc);
> - return NULL;
> - }
> -
> - return desc;
> -}
> -
> static void idma64_desc_free(struct idma64_chan *idma64c,
> struct idma64_desc *desc)
> {
> @@ -223,7 +206,6 @@ static void idma64_desc_free(struct idma64_chan *idma64c,
> } while (i);
> }
>
> - kfree(desc->hw);
> kfree(desc);
> }
>
> @@ -307,10 +289,12 @@ static struct dma_async_tx_descriptor *idma64_prep_slave_sg(
> struct scatterlist *sg;
> unsigned int i;
>
> - desc = idma64_alloc_desc(sg_len);
> + desc = kzalloc_flex(*desc, hw, sg_len, GFP_NOWAIT);
> if (!desc)
> return NULL;
>
> + desc->ndesc = sg_len;
> +
This patch is okay, but suggest use sg_nents_for_dma() later
Reviewed-by: Frank Li <Frank.Li@xxxxxxx>
>