diff options
| author | Yang Yingliang <yangyingliang@huawei.com> | 2022-11-09 21:28:32 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-11-25 17:36:50 +0100 |
| commit | b119bedbefb7dd9ed8bf8cb9f1056504250d610e (patch) | |
| tree | 9d782eabc48b9d901011257a34756496c8909240 | |
| parent | 4dfb4d30e9da8dd552ccb3c74c6fbe62aea0e595 (diff) | |
| download | linux-b119bedbefb7dd9ed8bf8cb9f1056504250d610e.tar.gz linux-b119bedbefb7dd9ed8bf8cb9f1056504250d610e.tar.bz2 linux-b119bedbefb7dd9ed8bf8cb9f1056504250d610e.zip | |
mISDN: fix possible memory leak in mISDN_dsp_element_register()
[ Upstream commit 98a2ac1ca8fd6eca6867726fe238d06e75eb1acd ]
Afer commit 1fa5ae857bb1 ("driver core: get rid of struct device's
bus_id string array"), the name of device is allocated dynamically,
use put_device() to give up the reference, so that the name can be
freed in kobject_cleanup() when the refcount is 0.
The 'entry' is going to be freed in mISDN_dsp_dev_release(), so the
kfree() is removed. list_del() is called in mISDN_dsp_dev_release(),
so it need be initialized.
Fixes: 1fa5ae857bb1 ("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/20221109132832.3270119-1-yangyingliang@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
| -rw-r--r-- | drivers/isdn/mISDN/dsp_pipeline.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/isdn/mISDN/dsp_pipeline.c b/drivers/isdn/mISDN/dsp_pipeline.c index e72b4e73cd61..796cae691560 100644 --- a/drivers/isdn/mISDN/dsp_pipeline.c +++ b/drivers/isdn/mISDN/dsp_pipeline.c @@ -97,6 +97,7 @@ int mISDN_dsp_element_register(struct mISDN_dsp_element *elem) if (!entry) return -ENOMEM; + INIT_LIST_HEAD(&entry->list); entry->elem = elem; entry->dev.class = elements_class; @@ -131,7 +132,7 @@ err2: device_unregister(&entry->dev); return ret; err1: - kfree(entry); + put_device(&entry->dev); return ret; } EXPORT_SYMBOL(mISDN_dsp_element_register); |
