Unverified Commit 57cf4e8d authored by Saurav Sachidanand's avatar Saurav Sachidanand Committed by Andi Shyti
Browse files

i2c: tegra: fix pm_runtime leak on mutex_lock failure



If tegra_i2c_mutex_lock() fails, the function returns without calling
pm_runtime_put(), leaking the runtime PM reference acquired by the
preceding pm_runtime_get_sync(). This prevents the device from ever
entering runtime suspend.

Add the missing pm_runtime_put() before returning on lock failure.

Fixes: 6077cfd7 ("i2c: tegra: Add support for SW mutex register")
Signed-off-by: default avatarSaurav Sachidanand <sauravsc@amazon.com>
Cc: <stable@vger.kernel.org> # v7.0+
Reviewed-by: default avatarJon Hunter <jonathanh@nvidia.com>
Acked-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarAndi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20260507221145.62183-2-sauravsc@amazon.com
parent 5d691905
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1666,8 +1666,10 @@ static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
	}

	ret = tegra_i2c_mutex_lock(i2c_dev);
	if (ret)
	if (ret) {
		pm_runtime_put(i2c_dev->dev);
		return ret;
	}

	for (i = 0; i < num; i++) {
		enum msg_end_type end_type = MSG_END_STOP;