diff options
author | Yang Yingliang <yangyingliang@huawei.com> | 2022-11-04 11:39:45 +0800 |
---|---|---|
committer | Thomas Bogendoerfer <tsbogend@alpha.franken.de> | 2022-11-22 13:09:36 +0100 |
commit | c5ed1fe0801f0c66b0fbce2785239a5664629057 (patch) | |
tree | 65c06da3da63094c0ceca895a543a518d2328543 /arch/mips/kernel/vpe-cmp.c | |
parent | 5822e8cc84ee37338ab0bdc3124f6eec04dc232d (diff) | |
download | linux-next-c5ed1fe0801f0c66b0fbce2785239a5664629057.tar.gz |
MIPS: vpe-cmp: fix possible memory leak while module exiting
dev_set_name() allocates memory for name, it need be freed
when module exiting, call put_device() to give up reference,
so that it can be freed in kobject_cleanup() when the refcount
hit to 0. The vpe_device is static, so remove kfree() from
vpe_device_release().
Fixes: 17a1d523aa58 ("MIPS: APRP: Add VPE loader support for CMP platforms.")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Diffstat (limited to 'arch/mips/kernel/vpe-cmp.c')
-rw-r--r-- | arch/mips/kernel/vpe-cmp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/mips/kernel/vpe-cmp.c b/arch/mips/kernel/vpe-cmp.c index e673603e11e5..92140edb3ce3 100644 --- a/arch/mips/kernel/vpe-cmp.c +++ b/arch/mips/kernel/vpe-cmp.c @@ -75,7 +75,6 @@ ATTRIBUTE_GROUPS(vpe); static void vpe_device_release(struct device *cd) { - kfree(cd); } static struct class vpe_class = { @@ -157,6 +156,7 @@ out_dev: device_del(&vpe_device); out_class: + put_device(&vpe_device); class_unregister(&vpe_class); out_chrdev: @@ -169,7 +169,7 @@ void __exit vpe_module_exit(void) { struct vpe *v, *n; - device_del(&vpe_device); + device_unregister(&vpe_device); class_unregister(&vpe_class); unregister_chrdev(major, VPE_MODULE_NAME); |