Commit 0eb4ff65 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

slimbus: core: fix runtime PM imbalance on report present



Make sure to balance the runtime PM usage count in case slimbus device
or address allocation fails on report present, which would otherwise
prevent the controller from suspending.

Fixes: 4b14e62a ("slimbus: Add support for 'clock-pause' feature")
Cc: stable@vger.kernel.org	# 4.16
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20251126145329.5022-3-johan@kernel.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0b52edae
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -489,21 +489,23 @@ int slim_device_report_present(struct slim_controller *ctrl,
	if (ctrl->sched.clk_state != SLIM_CLK_ACTIVE) {
		dev_err(ctrl->dev, "slim ctrl not active,state:%d, ret:%d\n",
				    ctrl->sched.clk_state, ret);
		goto slimbus_not_active;
		goto out_put_rpm;
	}

	sbdev = slim_get_device(ctrl, e_addr);
	if (IS_ERR(sbdev))
		return -ENODEV;
	if (IS_ERR(sbdev)) {
		ret = -ENODEV;
		goto out_put_rpm;
	}

	if (sbdev->is_laddr_valid) {
		*laddr = sbdev->laddr;
		return 0;
	}

		ret = 0;
	} else {
		ret = slim_device_alloc_laddr(sbdev, true);
	}

slimbus_not_active:
out_put_rpm:
	pm_runtime_mark_last_busy(ctrl->dev);
	pm_runtime_put_autosuspend(ctrl->dev);
	return ret;