Steven Rostedt (Google)
2394ac4145
tracing: Inform kmemleak of saved_cmdlines allocation
The allocation of the struct saved_cmdlines_buffer structure changed from:
s = kmalloc(sizeof(*s), GFP_KERNEL);
s->saved_cmdlines = kmalloc_array(TASK_COMM_LEN, val, GFP_KERNEL);
to:
orig_size = sizeof(*s) + val * TASK_COMM_LEN;
order = get_order(orig_size);
size = 1 << (order + PAGE_SHIFT);
page = alloc_pages(GFP_KERNEL, order);
if (!page)
return NULL;
s = page_address(page);
memset(s, 0, sizeof(*s));
s->saved_cmdlines = kmalloc_array(TASK_COMM_LEN, val, GFP_KERNEL);
Where that s->saved_cmdlines allocation looks to be a dangling allocation
to kmemleak. That's because kmemleak only keeps track of kmalloc()
allocations. For allocations that use page_alloc() directly, the kmemleak
needs to be explicitly informed about it.
Add kmemleak_alloc() and kmemleak_free() around the page allocation so
that it doesn't give the following false positive:
unreferenced object 0xffff8881010c8000 (size 32760):
comm "swapper", pid 0, jiffies 4294667296
hex dump (first 32 bytes):
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
backtrace (crc ae6ec1b9):
[<ffffffff86722405>] kmemleak_alloc+0x45/0x80
[<ffffffff8414028d>] __kmalloc_large_node+0x10d/0x190
[<ffffffff84146ab1>] __kmalloc+0x3b1/0x4c0
[<ffffffff83ed7103>] allocate_cmdlines_buffer+0x113/0x230
[<ffffffff88649c34>] tracer_alloc_buffers.isra.0+0x124/0x460
[<ffffffff8864a174>] early_trace_init+0x14/0xa0
[<ffffffff885dd5ae>] start_kernel+0x12e/0x3c0
[<ffffffff885f5758>] x86_64_start_reservations+0x18/0x30
[<ffffffff885f582b>] x86_64_start_kernel+0x7b/0x80
[<ffffffff83a001c3>] secondary_startup_64_no_verify+0x15e/0x16b
Link: https://lore.kernel.org/linux-trace-kernel/87r0hfnr9r.fsf@kernel.org/
Link: https://lore.kernel.org/linux-trace-kernel/20240214112046.09a322d6@gandalf.local.home
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Fixes: 44dc5c41b5 ("tracing: Fix wasted memory in saved_cmdlines logic")
Reported-by: Kalle Valo <kvalo@kernel.org>
Tested-by: Kalle Valo <kvalo@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
2024-02-14 12:36:34 -05:00
..
2024-01-17 20:20:06 -08:00
2024-01-18 09:48:40 -08:00
2023-09-22 09:50:55 -07:00
2024-01-17 17:19:06 +00:00
2024-01-18 16:49:34 -08:00
2023-12-21 23:12:18 +01:00
2024-01-09 11:18:47 -08:00
2023-12-20 19:26:31 -05:00
2023-10-18 14:43:22 -07:00
2023-11-02 20:53:31 -10:00
2023-10-18 14:34:17 -07:00
2023-09-20 11:24:18 +02:00
2024-01-12 16:35:58 -08:00
2024-01-10 18:00:18 -08:00
2023-12-20 19:19:26 +01:00
2023-11-03 15:44:25 -10:00
2023-12-14 01:21:31 +05:30
2024-01-18 11:57:33 -08:00
2024-01-21 11:14:40 -08:00
2024-02-14 12:36:34 -05:00
2023-09-11 15:05:50 +02:00
2024-01-10 16:43:55 -08:00
2023-11-02 20:53:31 -10:00
2023-11-14 17:34:27 -05:00
2023-11-12 22:33:49 -05:00
2023-07-21 12:17:25 -04:00
2023-08-15 18:16:14 -04:00
2023-10-13 18:34:46 +02:00
2022-09-26 19:46:09 -07:00
2023-08-08 16:48:47 -04:00
2022-09-26 10:13:13 -07:00
2023-03-14 19:32:38 -07:00
2023-06-05 09:57:20 +02:00
2023-01-13 11:48:15 +01:00
2024-01-09 10:36:07 -08:00
2024-01-12 15:20:47 -08:00
2023-12-15 14:19:48 -08:00
2023-04-18 16:39:34 -07:00
2024-01-10 16:43:55 -08:00
2023-09-21 12:03:50 -06:00
2023-02-08 13:36:22 +01:00
2024-01-18 15:16:57 -08:00
2023-12-23 15:52:13 +01:00
2023-05-28 16:20:21 +09:00
2023-09-29 11:28:39 -07:00
2023-04-08 13:45:37 -07:00
2023-08-21 13:37:28 -07:00
2023-03-24 11:01:29 +01:00
2022-12-01 15:53:05 -08:00
2022-11-12 18:47:36 -08:00
2023-08-29 17:32:32 -07:00
2022-11-15 00:42:02 -08:00
2023-08-25 15:00:36 -07:00
2023-10-19 11:02:48 +02:00
2023-12-20 13:46:19 -08:00
2023-06-09 17:44:17 -07:00
2024-01-12 15:20:47 -08:00
2023-12-29 12:22:25 -08:00
2022-09-11 21:55:06 -07:00
2023-10-09 16:59:47 +10:00
2023-03-24 20:10:59 -07:00
2023-12-01 14:53:55 +09:00
2023-06-08 12:27:20 -07:00
2023-08-24 16:25:14 -07:00
2023-11-02 20:53:31 -10:00
2022-09-11 21:55:12 -07:00
2023-12-20 19:26:30 -05:00
2023-04-08 13:45:38 -07:00
2023-08-21 11:29:12 -07:00
2023-12-20 19:26:30 -05:00
2023-10-27 18:04:24 +08:00
2023-10-04 10:41:56 -07:00
2023-12-01 09:51:44 -08:00
2023-12-20 19:26:31 -05:00
2023-08-21 13:37:59 -07:00
2023-12-12 14:24:14 +01:00
2022-09-11 21:55:12 -07:00
2024-01-09 11:46:20 -08:00
2024-01-09 16:20:17 -08:00
2023-12-29 12:22:27 -08:00
2024-01-09 11:46:20 -08:00
2022-12-27 12:52:12 +01:00
2023-07-14 15:02:57 -07:00
2022-11-09 18:06:35 +00:00
2023-12-12 14:24:14 +01:00
2023-12-10 17:21:32 -08:00
2023-10-30 17:56:53 -10:00
2023-10-04 10:41:57 -07:00
2023-07-13 15:21:50 +02:00
2023-04-20 11:36:35 +02:00
2023-12-29 12:22:29 -08:00
2022-10-17 16:41:16 +02:00
2024-01-09 12:57:46 -08:00
2023-11-18 19:35:31 +01:00
2022-09-08 16:56:45 -07:00
2023-11-01 15:28:33 -10:00
2023-09-19 13:21:32 -07:00
2023-10-04 10:41:57 -07:00
2023-09-24 17:24:01 +02:00
2023-02-18 14:34:36 -05:00
2023-08-15 15:26:17 -07:00
2023-06-29 15:19:43 -07:00
2023-09-13 14:59:24 +02:00
2023-11-28 14:08:47 +01:00
2023-10-11 08:46:01 -07:00
2023-04-13 11:49:35 -07:00
2023-06-08 15:43:09 -04:00
2023-12-21 13:17:54 +01:00
2023-06-19 16:25:28 -07:00
2023-06-09 17:44:21 -07:00
2023-12-29 12:22:30 -08:00
2023-08-07 15:57:22 -10:00
2023-11-22 06:18:49 -10:00