Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mISDN: fix possible memory leak in mISDN_dsp_element_register()

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>

authored by

Yang Yingliang and committed by
Jakub Kicinski
98a2ac1c 6f928ab8

+2 -1
+2 -1
drivers/isdn/mISDN/dsp_pipeline.c
··· 77 77 if (!entry) 78 78 return -ENOMEM; 79 79 80 + INIT_LIST_HEAD(&entry->list); 80 81 entry->elem = elem; 81 82 82 83 entry->dev.class = elements_class; ··· 108 107 device_unregister(&entry->dev); 109 108 return ret; 110 109 err1: 111 - kfree(entry); 110 + put_device(&entry->dev); 112 111 return ret; 113 112 } 114 113 EXPORT_SYMBOL(mISDN_dsp_element_register);