fsi: use put_device to release resource on error path

From: Pan Bian
Date: Wed Apr 17 2019 - 11:27:57 EST


In the function fsi_slave_init, kfree is used to release slave if error
occurs during set smode. Some fields of slave will not be released.
Resulting in memory leak. Instread, put_device should be used to
correctly release resources.

Fixes: d1dcd6782576("fsi: Add cfam char devices")
Signed-off-by: Pan Bian <bianpan2016@xxxxxxx>
---
drivers/fsi/fsi-core.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c
index 2c31563..2bb6625 100644
--- a/drivers/fsi/fsi-core.c
+++ b/drivers/fsi/fsi-core.c
@@ -1056,8 +1056,7 @@ static int fsi_slave_init(struct fsi_master *master, int link, uint8_t id)
dev_warn(&master->dev,
"can't set smode on slave:%02x:%02x %d\n",
link, id, rc);
- kfree(slave);
- return -ENODEV;
+ goto err_free;
}
if (master->link_config)
master->link_config(master, link,
--
2.7.4