From b71f8593fa1d97749cb9895d609e616169bc4d26 Mon Sep 17 00:00:00 2001 From: Frank Li Date: Wed, 12 Mar 2025 22:51:00 +0900 Subject: [PATCH] i3c: master: Fix missing 'ret' assignment in set_speed() BugLink: https://bugs.launchpad.net/bugs/2102118 commit b266e0d4dac00eecdfaf50ec3f708fd0c3b39637 upstream. Fix a probe failure in the i3c master driver that occurs when no i3c devices are connected to the bus. The issue arises in `i3c_master_bus_init()` where the `ret` value is not updated after calling `master->ops->set_speed()`. If no devices are present, `ret` remains set to `I3C_ERROR_M2`, causing the code to incorrectly proceed to `err_bus_cleanup`. Cc: stable@vger.kernel.org Fixes: aef79e189ba2 ("i3c: master: support to adjust first broadcast address speed") Signed-off-by: Frank Li Reviewed-by: Wolfram Sang Tested-by: Wolfram Sang Acked-by: Mukesh Kumar Savaliya Reviewed-by: Miquel Raynal Link: https://lore.kernel.org/r/20250108225533.915334-1-Frank.Li@nxp.com Signed-off-by: Alexandre Belloni Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 069a8680af14512e5fbe030c497c4403cec18392 linux-6.6.y) [koichiroden: follow-up fix for "i3c: master: support to adjust first broadcast address speed", from v6.6.78] Signed-off-by: Koichiro Den Signed-off-by: Stefan Bader --- drivers/i3c/master.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 578a78685e63..391a0128480a 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -1916,7 +1916,7 @@ static int i3c_master_bus_init(struct i3c_master_controller *master) goto err_bus_cleanup; if (master->ops->set_speed) { - master->ops->set_speed(master, I3C_OPEN_DRAIN_NORMAL_SPEED); + ret = master->ops->set_speed(master, I3C_OPEN_DRAIN_NORMAL_SPEED); if (ret) goto err_bus_cleanup; }