[PATCH] fsi: i2cr: Fix of_node reference leak in i2cr_probe()

Wentao Liang posted 1 patch 1 week, 1 day ago
drivers/fsi/fsi-master-i2cr.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH] fsi: i2cr: Fix of_node reference leak in i2cr_probe()
Posted by Wentao Liang 1 week, 1 day ago
In i2cr_probe(), a reference to the device tree node is taken with
of_node_get() and stored in master.dev.of_node.  If fsi_master_register()
fails, i2cr_release() never runs and the reference is leaked.

Put the device node reference before returning on the error path.

Fixes: 53e89e3e4490 ("fsi: Add IBM I2C Responder virtual FSI master")
Cc: stable@vger.kernel.org
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/fsi/fsi-master-i2cr.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/fsi/fsi-master-i2cr.c b/drivers/fsi/fsi-master-i2cr.c
index d36a4328ad73..31c9b3b70d92 100644
--- a/drivers/fsi/fsi-master-i2cr.c
+++ b/drivers/fsi/fsi-master-i2cr.c
@@ -280,8 +280,10 @@ static int i2cr_probe(struct i2c_client *client)
 	i2cr->client = client;
 
 	ret = fsi_master_register(&i2cr->master);
-	if (ret)
+	if (ret) {
+		of_node_put(i2cr->master.dev.of_node);
 		return ret;
+	}
 
 	i2c_set_clientdata(client, i2cr);
 	return 0;
-- 
2.34.1