i2c: fsi: Add of_put_node() before break
authorNishka Dasgupta <nishkadg.linux@gmail.com>
Sat, 6 Jul 2019 13:19:11 +0000 (18:49 +0530)
committerWolfram Sang <wsa@the-dreams.de>
Tue, 3 Sep 2019 18:33:43 +0000 (20:33 +0200)
Each iteration of for_each_available_childe_of_node puts the previous
node, but in the case of a break from the middle of the loop, there
is no put, thus causing a memory leak. Add an of_node_put before the
break.
Issue found with Coccinelle.

Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
Reviewed-by: Eddie James <eajames@linux.ibm.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-fsi.c

index da5eb39..e0c2569 100644 (file)
@@ -707,8 +707,10 @@ static int fsi_i2c_probe(struct device *dev)
                        continue;
 
                port = kzalloc(sizeof(*port), GFP_KERNEL);
-               if (!port)
+               if (!port) {
+                       of_node_put(np);
                        break;
+               }
 
                port->master = i2c;
                port->port = port_no;