mISDN: fix possible memory leak in mISDN_dsp_element_register()
Afer commit1fa5ae857b
("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: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/20221109132832.3270119-1-yangyingliang@huawei.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
6f928ab8ee
commit
98a2ac1ca8
|
@ -77,6 +77,7 @@ int mISDN_dsp_element_register(struct mISDN_dsp_element *elem)
|
||||||
if (!entry)
|
if (!entry)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
INIT_LIST_HEAD(&entry->list);
|
||||||
entry->elem = elem;
|
entry->elem = elem;
|
||||||
|
|
||||||
entry->dev.class = elements_class;
|
entry->dev.class = elements_class;
|
||||||
|
@ -107,7 +108,7 @@ err2:
|
||||||
device_unregister(&entry->dev);
|
device_unregister(&entry->dev);
|
||||||
return ret;
|
return ret;
|
||||||
err1:
|
err1:
|
||||||
kfree(entry);
|
put_device(&entry->dev);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(mISDN_dsp_element_register);
|
EXPORT_SYMBOL(mISDN_dsp_element_register);
|
||||||
|
|
Loading…
Reference in New Issue