Hi Zhang, On Sun, 29 Jun 2025 at 17:57, Zhang Shurong <zhang_shurong@xxxxxxxxxxx> wrote: > pm_runtime_get_sync will increment pm usage counter > even it failed. Forgetting to putting operation will > result in reference leak here. We fix it by replacing > it with pm_runtime_resume_and_get to keep usage counter > balanced. > > Fixes: 87244fe5abdf ("dmaengine: rcar-dmac: Add Renesas R-Car Gen2 DMA Controller (DMAC) driver") > Signed-off-by: Zhang Shurong <zhang_shurong@xxxxxxxxxxx> Thanks for your patch! Reviewed-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > --- a/drivers/dma/sh/rcar-dmac.c > +++ b/drivers/dma/sh/rcar-dmac.c > @@ -1068,7 +1068,7 @@ static int rcar_dmac_alloc_chan_resources(struct dma_chan *chan) > if (ret < 0) > return -ENOMEM; > > - return pm_runtime_get_sync(chan->device->dev); > + return pm_runtime_resume_and_get(chan->device->dev); Note that there are other issues with this function: in case of failure, none of the memory allocated before is freed. Probably the original author assumed none of this can really fail. > } > > static void rcar_dmac_free_chan_resources(struct dma_chan *chan) Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds