In ti_eqep_probe(), runtime PM is enabled and acquired via pm_runtime_get_sync(dev). However, if devm_clk_get_enabled() fails, the function returns directly without calling pm_runtime_put_sync() and pm_runtime_disable(), leaving the runtime PM usage count and enable state unbalanced. Add the missing pm_runtime_put_sync() and pm_runtime_disable() calls on the clock error path. Fixes: 0cf81c73e4c6 ("counter: ti-eqep: enable clock at probe") Cc: stable@vger.kernel.org Signed-off-by: Wentao Liang --- drivers/counter/ti-eqep.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/counter/ti-eqep.c b/drivers/counter/ti-eqep.c index d21c157e531a..84fbf500b0f8 100644 --- a/drivers/counter/ti-eqep.c +++ b/drivers/counter/ti-eqep.c @@ -548,8 +548,11 @@ static int ti_eqep_probe(struct platform_device *pdev) pm_runtime_get_sync(dev); clk = devm_clk_get_enabled(dev, NULL); - if (IS_ERR(clk)) + if (IS_ERR(clk)) { + pm_runtime_put_sync(dev); + pm_runtime_disable(dev); return dev_err_probe(dev, PTR_ERR(clk), "failed to enable clock\n"); + } err = counter_add(counter); if (err < 0) { -- 2.34.1