projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4e6a7b3
)
device-dax/core: Fix memory leak when rmmod dax.ko
author
Wang Hai
<wanghai38@huawei.com>
Tue, 1 Dec 2020 13:59:29 +0000
(21:59 +0800)
committer
Dan Williams
<dan.j.williams@intel.com>
Wed, 16 Dec 2020 06:03:52 +0000
(22:03 -0800)
When I repeatedly modprobe and rmmod dax.ko, kmemleak report a
memory leak as follows:
unreferenced object 0xffff9a5588c05088 (size 8):
comm "modprobe", pid 261, jiffies
4294693644
(age 42.063s)
...
backtrace:
[<
00000000e007ced0
>] kstrdup+0x35/0x70
[<
000000002ae73897
>] kstrdup_const+0x3d/0x50
[<
000000002b00c9c3
>] kvasprintf_const+0xbc/0xf0
[<
000000008023282f
>] kobject_set_name_vargs+0x3b/0xd0
[<
00000000d2cbaa4e
>] kobject_set_name+0x62/0x90
[<
00000000202e7a22
>] bus_register+0x7f/0x2b0
[<
000000000b77792c
>] 0xffffffffc02840f7
[<
000000002d5be5ac
>] 0xffffffffc02840b4
[<
00000000dcafb7cd
>] do_one_initcall+0x58/0x240
[<
00000000049fe480
>] do_init_module+0x56/0x1e2
[<
0000000022671491
>] load_module+0x2517/0x2840
[<
000000001a2201cb
>] __do_sys_finit_module+0x9c/0xe0
[<
000000003eb304e7
>] do_syscall_64+0x33/0x40
[<
0000000051c5fd06
>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
When rmmod dax is executed, dax_bus_exit() is missing. This patch
can fix this bug.
Fixes:
9567da0b408a
("device-dax: Introduce bus + driver model")
Cc: <stable@vger.kernel.org>
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Wang Hai <wanghai38@huawei.com>
Link:
https://lore.kernel.org/r/20201201135929.66530-1-wanghai38@huawei.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dax/super.c
patch
|
blob
|
history
diff --git
a/drivers/dax/super.c
b/drivers/dax/super.c
index
edc279b
..
cadbd0a
100644
(file)
--- a/
drivers/dax/super.c
+++ b/
drivers/dax/super.c
@@
-752,6
+752,7
@@
err_chrdev:
static void __exit dax_core_exit(void)
{
+ dax_bus_exit();
unregister_chrdev_region(dax_devt, MINORMASK+1);
ida_destroy(&dax_minor_ida);
dax_fs_exit();