Chen Jun
6f0d9d3e74
tracing: Fix a kmemleak false positive in tracing_map
...
[ Upstream commit f25667e5980a4333729cac3101e5de1bb851f71a ]
Doing the command:
echo 'hist:key=common_pid.execname,common_timestamp' > /sys/kernel/debug/tracing/events/xxx/trigger
Triggers many kmemleak reports:
unreferenced object 0xffff0000c7ea4980 (size 128):
comm "bash", pid 338, jiffies 4294912626 (age 9339.324s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<00000000f3469921>] kmem_cache_alloc_trace+0x4c0/0x6f0
[<0000000054ca40c3>] hist_trigger_elt_data_alloc+0x140/0x178
[<00000000633bd154>] tracing_map_init+0x1f8/0x268
[<000000007e814ab9>] event_hist_trigger_func+0xca0/0x1ad0
[<00000000bf8520ed>] trigger_process_regex+0xd4/0x128
[<00000000f549355a>] event_trigger_write+0x7c/0x120
[<00000000b80f898d>] vfs_write+0xc4/0x380
[<00000000823e1055>] ksys_write+0x74/0xf8
[<000000008a9374aa>] __arm64_sys_write+0x24/0x30
[<0000000087124017>] do_el0_svc+0x88/0x1c0
[<00000000efd0dcd1>] el0_svc+0x1c/0x28
[<00000000dbfba9b3>] el0_sync_handler+0x88/0xc0
[<00000000e7399680>] el0_sync+0x148/0x180
unreferenced object 0xffff0000c7ea4980 (size 128):
comm "bash", pid 338, jiffies 4294912626 (age 9339.324s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<00000000f3469921>] kmem_cache_alloc_trace+0x4c0/0x6f0
[<0000000054ca40c3>] hist_trigger_elt_data_alloc+0x140/0x178
[<00000000633bd154>] tracing_map_init+0x1f8/0x268
[<000000007e814ab9>] event_hist_trigger_func+0xca0/0x1ad0
[<00000000bf8520ed>] trigger_process_regex+0xd4/0x128
[<00000000f549355a>] event_trigger_write+0x7c/0x120
[<00000000b80f898d>] vfs_write+0xc4/0x380
[<00000000823e1055>] ksys_write+0x74/0xf8
[<000000008a9374aa>] __arm64_sys_write+0x24/0x30
[<0000000087124017>] do_el0_svc+0x88/0x1c0
[<00000000efd0dcd1>] el0_svc+0x1c/0x28
[<00000000dbfba9b3>] el0_sync_handler+0x88/0xc0
[<00000000e7399680>] el0_sync+0x148/0x180
The reason is elts->pages[i] is alloced by get_zeroed_page.
and kmemleak will not scan the area alloced by get_zeroed_page.
The address stored in elts->pages will be regarded as leaked.
That is, the elts->pages[i] will have pointers loaded onto it as well, and
without telling kmemleak about it, those pointers will look like memory
without a reference.
To fix this, call kmemleak_alloc to tell kmemleak to scan elts->pages[i]
Link: https://lkml.kernel.org/r/20211124140801.87121-1-chenjun102@huawei.com
Signed-off-by: Chen Jun <chenjun102@huawei.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-12-17 10:14:40 +01:00
..
2021-09-30 10:11:05 +02:00
2021-08-15 14:00:25 +02:00
2020-07-13 16:55:49 -07:00
2021-02-10 09:29:16 +01:00
2020-05-12 18:24:34 -04:00
2021-10-27 09:56:56 +02:00
2021-01-19 18:27:19 +01:00
2020-01-30 09:46:28 -05:00
2020-08-09 14:10:26 -07:00
2020-05-11 17:00:34 -04:00
2020-07-29 11:43:53 +02:00
2021-11-18 14:03:49 +01:00
2020-10-05 19:32:18 -04:00
2021-09-22 12:28:03 +02:00
2020-01-13 13:19:38 -05:00
2021-06-23 14:42:50 +02:00
2020-09-21 21:06:02 -04:00
2020-02-01 13:09:23 -05:00
2020-06-16 21:21:02 -04:00
2020-08-23 17:36:59 -05:00
2021-12-08 09:03:22 +01:00
2020-01-02 19:04:57 -05:00
2020-11-02 15:58:32 -05:00
2020-06-23 21:51:40 -04:00
2021-12-01 09:19:09 +01:00
2020-10-25 14:51:49 -07:00
2020-09-18 22:17:14 -04:00
2021-10-27 09:56:56 +02:00
2020-11-30 21:43:07 -05:00
2021-02-10 09:29:16 +01:00
2020-01-13 13:19:38 -05:00
2021-09-22 12:28:00 +02:00
2020-01-13 13:19:38 -05:00
2020-09-18 12:42:11 -04:00
2020-09-14 10:08:07 +02:00
2020-10-15 15:51:28 -07:00
2021-09-22 12:28:00 +02:00
2021-09-22 12:28:00 +02:00
2020-01-30 09:46:10 -05:00
2020-01-13 13:19:38 -05:00
2020-12-30 11:54:28 +01:00
2020-01-21 18:39:54 -05:00
2020-09-18 22:17:14 -04:00
2020-09-18 22:17:14 -04:00
2021-07-28 14:35:45 +02:00
2020-02-06 07:12:11 +00:00
2021-12-01 09:19:01 +01:00
2021-08-12 13:22:12 +02:00
2021-12-01 09:19:01 +01:00
2021-12-17 10:14:40 +01:00