The successful transfer path returns 0 without dropping the runtime PM usage counter taken by pm_runtime_get_sync(). The error paths all jump to pm_put, which releases the reference, but a completed transfer keeps it forever. Fall through to pm_put on success so the reference is always released. Fixes: 917809e2280bb ("slimbus: ngd: Add qcom SLIMBus NGD driver") Cc: stable@vger.kernel.org Signed-off-by: Wentao Liang --- drivers/slimbus/qcom-ngd-ctrl.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c index 1ed6be6e85d2..be5640f45d7c 100644 --- a/drivers/slimbus/qcom-ngd-ctrl.c +++ b/drivers/slimbus/qcom-ngd-ctrl.c @@ -937,7 +937,6 @@ static int qcom_slim_ngd_xfer_msg_sync(struct slim_controller *ctrl, ret = -ETIMEDOUT; goto pm_put; } - return 0; pm_put: pm_runtime_put(ctrl->dev); -- 2.34.1