diff options
author | Yang Yingliang <yangyingliang@huawei.com> | 2022-11-04 10:13:34 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-11-26 09:24:36 +0100 |
commit | 5d03c2911c529ea4d6ebfec53425f1091e8d402b (patch) | |
tree | 9933c8b6fcee199de545afefefd9dea520c3f909 /drivers/siox | |
parent | 530e987a02263a1651cc72f09f504ff1890ba8c3 (diff) | |
download | linux-stable-5d03c2911c529ea4d6ebfec53425f1091e8d402b.tar.gz linux-stable-5d03c2911c529ea4d6ebfec53425f1091e8d402b.tar.bz2 linux-stable-5d03c2911c529ea4d6ebfec53425f1091e8d402b.zip |
siox: fix possible memory leak in siox_device_add()
[ Upstream commit 6e63153db50059fb78b8a8447b132664887d24e3 ]
If device_register() returns error in siox_device_add(),
the name allocated by dev_set_name() need be freed. As
comment of device_register() says, it should use put_device()
to give up the reference in the error path. So fix this
by calling put_device(), then the name can be freed in
kobject_cleanup(), and sdevice is freed in siox_device_release(),
set it to null in error path.
Fixes: bbecb07fa0af ("siox: new driver framework for eckelmann SIOX")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/20221104021334.618189-1-yangyingliang@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/siox')
-rw-r--r-- | drivers/siox/siox-core.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/siox/siox-core.c b/drivers/siox/siox-core.c index 7c4f32d76966..561408583b2b 100644 --- a/drivers/siox/siox-core.c +++ b/drivers/siox/siox-core.c @@ -839,6 +839,8 @@ static struct siox_device *siox_device_add(struct siox_master *smaster, err_device_register: /* don't care to make the buffer smaller again */ + put_device(&sdevice->dev); + sdevice = NULL; err_buf_alloc: siox_master_unlock(smaster); |