Hi! > > 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: > > 1) Replacing it with pm_runtime_resume_and_get to keep usage counter > > balanced. > > Suspect. > > > 2) Add putting operation before returning error. > > Yes but you also put in success case, which is likely > wrong. mtk_uart_apdma_free_chan_resources() does second put. This is possible fix for the second problem: Signed-off-by: Pavel Machek <pavel@xxxxxxx> diff --git a/drivers/dma/mediatek/mtk-uart-apdma.c b/drivers/dma/mediatek/mtk-uart-apdma.c index a1517ef1f4a0..8ec046a7e714 100644 --- a/drivers/dma/mediatek/mtk-uart-apdma.c +++ b/drivers/dma/mediatek/mtk-uart-apdma.c @@ -300,7 +300,8 @@ static int mtk_uart_apdma_alloc_chan_resources(struct dma_chan *chan) if (mtkd->support_33bits) mtk_uart_apdma_write(c, VFF_4G_SUPPORT, VFF_4G_SUPPORT_CLR_B); - + return 0; + err_pm: pm_runtime_put_noidle(mtkd->ddev.dev); return ret; Best regards, Pavel -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Attachment:
signature.asc
Description: PGP signature