Skip to content

Commit 8856eaf

Browse files
Bence Csókásbroonie
authored andcommitted
spi: atmel-quadspi: Fix unbalanced pm_runtime by using devm_ API
Fix unbalanced PM in error path of `atmel_qspi_probe()` by using `devm_pm_runtime_*()` functions. Reported-by: Alexander Dahl <ada@thorsis.com> Closes: https://lore.kernel.org/linux-spi/20250110-paycheck-irregular-bcddab1276c7@thorsis.com/ Fixes: 5af4220 ("spi: atmel-quadspi: Add support for sama7g5 QSPI") Signed-off-by: Bence Csókás <csokas.bence@prolan.hu> Link: https://patch.msgid.link/20250327195928.680771-4-csokas.bence@prolan.hu Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 73db799 commit 8856eaf

File tree

1 file changed

+4
-13
lines changed

1 file changed

+4
-13
lines changed

drivers/spi/atmel-quadspi.c

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,22 +1436,17 @@ static int atmel_qspi_probe(struct platform_device *pdev)
14361436

14371437
pm_runtime_set_autosuspend_delay(&pdev->dev, 500);
14381438
pm_runtime_use_autosuspend(&pdev->dev);
1439-
pm_runtime_set_active(&pdev->dev);
1440-
pm_runtime_enable(&pdev->dev);
1441-
pm_runtime_get_noresume(&pdev->dev);
1439+
devm_pm_runtime_set_active_enabled(&pdev->dev);
1440+
devm_pm_runtime_get_noresume(&pdev->dev);
14421441

14431442
err = atmel_qspi_init(aq);
14441443
if (err)
14451444
goto dma_release;
14461445

14471446
err = spi_register_controller(ctrl);
1448-
if (err) {
1449-
pm_runtime_put_noidle(&pdev->dev);
1450-
pm_runtime_disable(&pdev->dev);
1451-
pm_runtime_set_suspended(&pdev->dev);
1452-
pm_runtime_dont_use_autosuspend(&pdev->dev);
1447+
if (err)
14531448
goto dma_release;
1454-
}
1449+
14551450
pm_runtime_mark_last_busy(&pdev->dev);
14561451
pm_runtime_put_autosuspend(&pdev->dev);
14571452

@@ -1530,10 +1525,6 @@ static void atmel_qspi_remove(struct platform_device *pdev)
15301525
*/
15311526
dev_warn(&pdev->dev, "Failed to resume device on remove\n");
15321527
}
1533-
1534-
pm_runtime_disable(&pdev->dev);
1535-
pm_runtime_dont_use_autosuspend(&pdev->dev);
1536-
pm_runtime_put_noidle(&pdev->dev);
15371528
}
15381529

15391530
static int __maybe_unused atmel_qspi_suspend(struct device *dev)

0 commit comments

Comments
 (0)