Chen Jun
dd55f64bdf
tracing: Fix a kmemleak false positive in tracing_map
[ Upstream commit f25667e598 ]
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-22 09:05:13 +01:00
..
2021-11-26 11:48:20 +01:00
2021-03-03 17:44:31 +01:00
2021-09-22 11:43:09 +02:00
2020-09-23 08:46:14 +02:00
2021-03-24 10:59:26 +01:00
2021-11-26 11:48:27 +01:00
2021-12-08 08:45:03 +01:00
2021-11-12 13:18:02 +01:00
2019-05-31 06:48:30 -07:00
2021-12-14 10:04:48 +01:00
2021-03-24 10:59:25 +01:00
2021-12-22 09:05:13 +01:00
2018-01-10 09:29:51 +01:00
2018-02-17 13:21:18 +01:00
2020-10-01 20:40:07 +02:00
2021-04-07 12:05:41 +02:00
2021-04-07 12:05:41 +02:00
2021-04-07 12:05:41 +02:00
2019-11-28 18:28:55 +01:00
2018-11-13 11:16:57 -08:00
2017-01-06 10:40:13 +01:00
2019-12-21 10:42:02 +01:00
2021-11-26 11:48:32 +01:00
2020-06-20 10:24:21 +02:00
2020-12-29 13:44:50 +01:00
2017-10-12 11:51:25 +02:00
2020-01-12 11:24:13 +01:00
2021-02-03 23:19:49 +01:00
2017-07-21 07:42:21 +02:00
2021-09-22 11:43:08 +02:00
2021-07-11 12:46:40 +02:00
2018-01-10 09:29:52 +01:00
2019-04-20 09:07:52 +02:00
2017-12-14 09:28:24 +01:00
2018-08-03 07:55:12 +02:00
2018-06-05 10:28:57 +02:00
2021-05-22 10:40:31 +02:00
2020-10-14 09:48:14 +02:00
2021-12-08 08:45:06 +01:00
2021-07-11 12:46:41 +02:00
2021-02-10 09:09:25 +01:00
2017-03-12 06:41:45 +01:00
2019-01-13 10:03:51 +01:00
2021-03-03 17:44:44 +01:00
2020-04-02 17:20:26 +02:00
2020-05-27 16:41:53 +02:00
2019-10-17 13:42:25 -07:00
2021-09-22 11:43:08 +02:00
2018-04-13 19:47:53 +02:00
2021-09-26 13:36:18 +02:00
2021-05-26 11:29:06 +02:00
2020-11-18 18:26:32 +01:00
2020-08-26 10:29:03 +02:00
2018-04-24 09:34:09 +02:00
2021-03-03 17:44:43 +01:00
2021-11-26 11:48:24 +01:00
2018-08-15 18:14:53 +02:00
2018-08-15 18:14:42 +02:00
2017-02-14 15:25:42 -08:00
2018-08-03 07:55:24 +02:00
2021-09-26 13:36:18 +02:00
2020-07-09 09:35:55 +02:00
2020-01-12 11:24:12 +01:00
2021-03-03 17:44:38 +01:00
2017-06-17 06:41:51 +02:00
2018-01-10 09:29:52 +01:00
2018-09-09 20:01:24 +02:00
2018-09-09 20:01:24 +02:00
2017-06-17 06:41:57 +02:00
2017-06-17 06:41:57 +02:00
2017-11-15 15:53:17 +01:00
2021-08-04 11:58:01 +02:00