diff mbox series

[1/1] i3c: master: Fix missing 'ret' assignment in set_speed()

Message ID 20250108225533.915334-1-Frank.Li@nxp.com (mailing list archive)
State New
Headers show
Series [1/1] i3c: master: Fix missing 'ret' assignment in set_speed() | expand

Commit Message

Frank Li Jan. 8, 2025, 10:55 p.m. UTC
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 <Frank.Li@nxp.com>
---
 drivers/i3c/master.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Wolfram Sang Jan. 9, 2025, 7:43 a.m. UTC | #1
On Wed, Jan 08, 2025 at 05:55:33PM -0500, Frank Li wrote:
> 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 <Frank.Li@nxp.com>

Precisely.

Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>

Tested with a Renesas RZ/G3S-SMARC board with some test code added to
the still under-development controller driver:

Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Mukesh Kumar Savaliya Jan. 9, 2025, 8:50 a.m. UTC | #2
Hi Frank, change looks good to me.

On 1/9/2025 4:25 AM, Frank Li wrote:
> 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 <Frank.Li@nxp.com>
> ---
>   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 42310c9a00c2d..53ab814b676ff 100644
> --- a/drivers/i3c/master.c
> +++ b/drivers/i3c/master.c
> @@ -1919,7 +1919,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;
>   	}
Acked-by: Mukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
Miquel Raynal Jan. 9, 2025, 1:04 p.m. UTC | #3
On 08/01/2025 at 17:55:33 -05, Frank Li <Frank.Li@nxp.com> wrote:

> 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`.

Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>

Thanks,
Miquèl
diff mbox series

Patch

diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index 42310c9a00c2d..53ab814b676ff 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -1919,7 +1919,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;
 	}