pm_runtime_get_sync() increments the runtime PM usage counter even it returns an error code. Thus a pairing decrement is needed on the error handling path to keep the counter balanced. Signed-off-by: Dinghao Liu <dinghao.liu@xxxxxxxxxx> --- drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c index 3e4e4bbda34c..18f0f251204c 100644 --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c @@ -598,8 +598,10 @@ static int sun8i_ce_probe(struct platform_device *pdev) goto error_alg; err = pm_runtime_get_sync(ce->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_sync(ce->dev); goto error_alg; + } v = readl(ce->base + CE_CTR); v >>= CE_DIE_ID_SHIFT; -- 2.17.1