]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
i2c: fsi: Fix a potential leak in fsi_i2c_probe()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 1 Mar 2026 16:21:01 +0000 (17:21 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Mar 2026 10:08:56 +0000 (11:08 +0100)
commit be627abcc0d5dbd5882873bd85fbc18aa3d189ed upstream.

In the commit in Fixes:, when the code has been updated to use an explicit
for loop, instead of for_each_available_child_of_node(), the assumption
that a reference to a device_node structure would be released at each
iteration has been broken.

Now, an explicit of_node_put() is needed to release the reference.

Fixes: 095561f476ab ("i2c: fsi: Create busses for all ports")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: <stable@vger.kernel.org> # v5.3+
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/fd805c39f8de51edf303856103d782138a1633c8.1772382022.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/i2c/busses/i2c-fsi.c

index ae016a9431dac326971edff693f20e8e9641c845..6a9245423d2b581dcdd30dd20f6b7a7a04c8a00a 100644 (file)
@@ -728,6 +728,7 @@ static int fsi_i2c_probe(struct device *dev)
                rc = i2c_add_adapter(&port->adapter);
                if (rc < 0) {
                        dev_err(dev, "Failed to register adapter: %d\n", rc);
+                       of_node_put(np);
                        kfree(port);
                        continue;
                }