[PATCH] i3c: master: Fix of_node reference leak in i3c_master_register()

sashiko-bot at kernel.org sashiko-bot at kernel.org
Wed Sep 16 09:16:15 PDT 2026


Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] i3c: API mismatch in error path leaves fwnode reference leaked on ACPI
--

commit b1e59a31437144668b1fb151fcdcb4359e796610
Author: Wentao Liang <vulab at iscas.ac.cn>

i3c: master: Fix of_node reference leak in i3c_master_register()

This commit attempts to fix a node reference leak in the error path of
i3c_master_register() when i3c_master_rpm_get() fails. It drops the reference
before device_initialize() is called.

> diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
> index afcd7a21a3e66..1909d40387879 100644
> --- a/drivers/i3c/master.c
> +++ b/drivers/i3c/master.c
> @@ -3685,8 +3685,10 @@ int i3c_master_register(struct i3c_master_controller *master,
>  	INIT_LIST_HEAD(&master->boardinfo.i3c);
>  
>  	ret = i3c_master_rpm_get(master);
> -	if (ret)
> +	if (ret) {
> +		of_node_put(master->dev.of_node);

[Severity: Medium]
Does this code correctly release the fwnode reference on non-DT systems like
ACPI?

The node for master->dev is acquired earlier in i3c_master_register() 
using the generic fwnode API:

	device_set_node(&master->dev, fwnode_handle_get(dev_fwnode(parent)));

Since of_node_put() only operates on Open Firmware nodes, won't this result in
a leaked reference on platforms utilizing ACPI or software nodes?

Should this use fwnode_handle_put(dev_fwnode(&master->dev)) instead, matching
the cleanup sequence implemented in i3c_masterdev_release()?

>  		return ret;
> +	}
>  
>  	device_initialize(&master->dev);
>

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260916160358.2081087-1-vulab@iscas.ac.cn?part=1



More information about the linux-i3c mailing list