mfd: arizona: Use pm_runtime_resume_and_get() to prevent refcnt leak
authorLiang He <windhl@126.com>
Thu, 5 Jan 2023 06:10:55 +0000 (14:10 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Mar 2023 12:55:32 +0000 (13:55 +0100)
[ Upstream commit 4414a7ab80cebf715045e3c4d465feefbad21139 ]

In arizona_clk32k_enable(), we should use pm_runtime_resume_and_get()
as pm_runtime_get_sync() will increase the refcnt even when it
returns an error.

Signed-off-by: Liang He <windhl@126.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20230105061055.1509261-1-windhl@126.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/mfd/arizona-core.c

index cbf1dd9..b1c53e0 100644 (file)
@@ -45,7 +45,7 @@ int arizona_clk32k_enable(struct arizona *arizona)
        if (arizona->clk32k_ref == 1) {
                switch (arizona->pdata.clk32k_src) {
                case ARIZONA_32KZ_MCLK1:
-                       ret = pm_runtime_get_sync(arizona->dev);
+                       ret = pm_runtime_resume_and_get(arizona->dev);
                        if (ret != 0)
                                goto err_ref;
                        ret = clk_prepare_enable(arizona->mclk[ARIZONA_MCLK1]);