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 <bianpan2...@163.com>
---
 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

Reply via email to