projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
aa6d148
)
ubifs: Fix memory leak in ubifs_sysfs_init()
author
Liu Shixin
<liushixin2@huawei.com>
Thu, 20 Oct 2022 04:30:31 +0000
(12:30 +0800)
committer
Richard Weinberger
<richard@nod.at>
Thu, 2 Feb 2023 20:13:35 +0000
(21:13 +0100)
When insmod ubifs.ko, a kmemleak reported as below:
unreferenced object 0xffff88817fb1a780 (size 8):
comm "insmod", pid 25265, jiffies
4295239702
(age 100.130s)
hex dump (first 8 bytes):
75 62 69 66 73 00 ff ff ubifs...
backtrace:
[<
ffffffff81b3fc4c
>] slab_post_alloc_hook+0x9c/0x3c0
[<
ffffffff81b44bf3
>] __kmalloc_track_caller+0x183/0x410
[<
ffffffff8198d3da
>] kstrdup+0x3a/0x80
[<
ffffffff8198d486
>] kstrdup_const+0x66/0x80
[<
ffffffff83989325
>] kvasprintf_const+0x155/0x190
[<
ffffffff83bf55bb
>] kobject_set_name_vargs+0x5b/0x150
[<
ffffffff83bf576b
>] kobject_set_name+0xbb/0xf0
[<
ffffffff8100204c
>] do_one_initcall+0x14c/0x5a0
[<
ffffffff8157e380
>] do_init_module+0x1f0/0x660
[<
ffffffff815857be
>] load_module+0x6d7e/0x7590
[<
ffffffff8158644f
>] __do_sys_finit_module+0x19f/0x230
[<
ffffffff815866b3
>] __x64_sys_finit_module+0x73/0xb0
[<
ffffffff88c98e85
>] do_syscall_64+0x35/0x80
[<
ffffffff88e00087
>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
When kset_register() failed, we should call kset_put to cleanup it.
Fixes: 2e3cbf425804 ("ubifs: Export filesystem error counters")
Signed-off-by: Liu Shixin <liushixin2@huawei.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
fs/ubifs/sysfs.c
patch
|
blob
|
history
diff --git
a/fs/ubifs/sysfs.c
b/fs/ubifs/sysfs.c
index 06ad8fa1fcfb08b7c69aec565db4a7186b2629a9..54270ad36321e728370c5b087262222c361ab2ff 100644
(file)
--- a/
fs/ubifs/sysfs.c
+++ b/
fs/ubifs/sysfs.c
@@
-144,6
+144,8
@@
int __init ubifs_sysfs_init(void)
kobject_set_name(&ubifs_kset.kobj, "ubifs");
ubifs_kset.kobj.parent = fs_kobj;
ret = kset_register(&ubifs_kset);
+ if (ret)
+ kset_put(&ubifs_kset);
return ret;
}