Re: [PATCH] i2c: Fix reference leak in of_i2c_register_devices

From: Christophe JAILLET
Date: Sun Apr 06 2025 - 14:16:10 EST


Le 06/04/2025 à 15:48, Sunny Patel a écrit :
Fix a potential reference leak in of_i2c_register_devices where the
reference to the node is not released if device registration fails.
This ensures proper reference management and avoids memory leaks.

There is no early exit path in the for_each_available_child_of_node() block, so of_node_put((node) is called for all the nodes that are iterated.

Can you elaborate and explain how the reference leak can occur?

CJ


Signed-off-by: Sunny Patel <nueralspacetech@xxxxxxxxx>
---
drivers/i2c/i2c-core-of.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/i2c/i2c-core-of.c b/drivers/i2c/i2c-core-of.c
index 02feee6c9ba9..7c50905de8f1 100644
--- a/drivers/i2c/i2c-core-of.c
+++ b/drivers/i2c/i2c-core-of.c
@@ -107,6 +107,7 @@ void of_i2c_register_devices(struct i2c_adapter *adap)
"Failed to create I2C device for %pOF\n",
node);
of_node_clear_flag(node, OF_POPULATED);
+ of_node_put(node);
}
}