scsi: scsi_debug: Fix possible name leak in sdebug_add_host_helper()
[ Upstream commite6d773f93a
] Afer commit1fa5ae857b
("driver core: get rid of struct device's bus_id string array"), the name of device is allocated dynamically, it needs be freed when device_register() returns error. As comment of device_register() says, one should use put_device() to give up the reference in the error path. Fix this by calling put_device(), then the name can be freed in kobject_cleanup(), and sdbg_host is freed in sdebug_release_adapter(). When the device release is not set, it means the device is not initialized. We can not call put_device() in this case. Use kfree() to free memory. Fixes:1fa5ae857b
("driver core: get rid of struct device's bus_id string array") Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Link: https://lore.kernel.org/r/20221112131010.3757845-1-yangyingliang@huawei.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
4e4968dfb5
Коммит
c444f58fda
|
@ -7156,7 +7156,10 @@ clean:
|
|||
kfree(sdbg_devinfo->zstate);
|
||||
kfree(sdbg_devinfo);
|
||||
}
|
||||
kfree(sdbg_host);
|
||||
if (sdbg_host->dev.release)
|
||||
put_device(&sdbg_host->dev);
|
||||
else
|
||||
kfree(sdbg_host);
|
||||
pr_warn("%s: failed, errno=%d\n", __func__, -error);
|
||||
return error;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче