Commit baa16371 authored by Zhang Qilong's avatar Zhang Qilong Committed by Vinod Koul
Browse files

dmaengine: stm32-dmamux: Fix PM usage counter unbalance in stm32 dmamux ops



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: 4f3ceca2 ("dmaengine: stm32-dmamux: Add PM Runtime support")
Signed-off-by: default avatarZhang Qilong <zhangqilong3@huawei.com>
Link: https://lore.kernel.org/r/20210607064640.121394-3-zhangqilong3@huawei.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent d54db74a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ static void *stm32_dmamux_route_allocate(struct of_phandle_args *dma_spec,

	/* Set dma request */
	spin_lock_irqsave(&dmamux->lock, flags);
	ret = pm_runtime_get_sync(&pdev->dev);
	ret = pm_runtime_resume_and_get(&pdev->dev);
	if (ret < 0) {
		spin_unlock_irqrestore(&dmamux->lock, flags);
		goto error;
@@ -336,7 +336,7 @@ static int stm32_dmamux_suspend(struct device *dev)
	struct stm32_dmamux_data *stm32_dmamux = platform_get_drvdata(pdev);
	int i, ret;

	ret = pm_runtime_get_sync(dev);
	ret = pm_runtime_resume_and_get(dev);
	if (ret < 0)
		return ret;

@@ -361,7 +361,7 @@ static int stm32_dmamux_resume(struct device *dev)
	if (ret < 0)
		return ret;

	ret = pm_runtime_get_sync(dev);
	ret = pm_runtime_resume_and_get(dev);
	if (ret < 0)
		return ret;