Commit 4910da6b authored by Pei Xiao's avatar Pei Xiao Committed by Guenter Roeck
Browse files

hwmon: (emc2305) fix device node refcount leak in error path



The for_each_child_of_node() macro automatically manages device node
reference counts during normal iteration. However, when breaking out
of the loop early with return, the current iteration's node is not
automatically released, leading to a reference count leak.

Fix this by adding of_node_put(child) before returning from the loop
when emc2305_set_single_tz() fails.

This issue could lead to memory leaks over multiple probe cycles.

Signed-off-by: default avatarPei Xiao <xiaopei01@kylinos.cn>
Link: https://lore.kernel.org/r/tencent_5CDC08544C901D5ECA270573D5AEE3117108@qq.com


Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 541dfb49
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -683,8 +683,10 @@ static int emc2305_probe(struct i2c_client *client)
			i = 0;
			for_each_child_of_node(dev->of_node, child) {
				ret = emc2305_set_single_tz(dev, child, i);
				if (ret != 0)
				if (ret != 0) {
					of_node_put(child);
					return ret;
				}
				i++;
			}
		} else {