projects
/
platform
/
kernel
/
linux-rpi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
72b8ec1
)
test_firmware: fix memory leak in test_firmware_init()
author
Zhengchao Shao
<shaozhengchao@huawei.com>
Sat, 19 Nov 2022 03:57:21 +0000
(11:57 +0800)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Wed, 23 Nov 2022 18:49:13 +0000
(19:49 +0100)
When misc_register() failed in test_firmware_init(), the memory pointed
by test_fw_config->name is not released. The memory leak information is
as follows:
unreferenced object 0xffff88810a34cb00 (size 32):
comm "insmod", pid 7952, jiffies
4294948236
(age 49.060s)
hex dump (first 32 bytes):
74 65 73 74 2d 66 69 72 6d 77 61 72 65 2e 62 69 test-firmware.bi
6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 n...............
backtrace:
[<
ffffffff81b21fcb
>] __kmalloc_node_track_caller+0x4b/0xc0
[<
ffffffff81affb96
>] kstrndup+0x46/0xc0
[<
ffffffffa0403a49
>] __test_firmware_config_init+0x29/0x380 [test_firmware]
[<
ffffffffa040f068
>] 0xffffffffa040f068
[<
ffffffff81002c41
>] do_one_initcall+0x141/0x780
[<
ffffffff816a72c3
>] do_init_module+0x1c3/0x630
[<
ffffffff816adb9e
>] load_module+0x623e/0x76a0
[<
ffffffff816af471
>] __do_sys_finit_module+0x181/0x240
[<
ffffffff89978f99
>] do_syscall_64+0x39/0xb0
[<
ffffffff89a0008b
>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
Fixes:
c92316bf8e94
("test_firmware: add batched firmware tests")
Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
Acked-by: Luis Chamberlain <mcgrof@kernel.org>
Link:
https://lore.kernel.org/r/20221119035721.18268-1-shaozhengchao@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
lib/test_firmware.c
patch
|
blob
|
history
diff --git
a/lib/test_firmware.c
b/lib/test_firmware.c
index
0c714cd
..
e207bc0
100644
(file)
--- a/
lib/test_firmware.c
+++ b/
lib/test_firmware.c
@@
-1491,6
+1491,7
@@
static int __init test_firmware_init(void)
rc = misc_register(&test_fw_misc_device);
if (rc) {
+ __test_firmware_config_free();
kfree(test_fw_config);
pr_err("could not register misc device: %d\n", rc);
return rc;