Skip to content

Commit c44a14f

Browse files
committed
tracing: Enforce the persistent ring buffer to be page aligned
Enforce that the address and the size of the memory used by the persistent ring buffer is page aligned. Also update the documentation to reflect this requirement. Link: https://lore.kernel.org/all/CAHk-=whUOfVucfJRt7E0AH+GV41ELmS4wJqxHDnui6Giddfkzw@mail.gmail.com/ Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Vincent Donnefort <vdonnefort@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Mike Rapoport <rppt@kernel.org> Cc: Jann Horn <jannh@google.com> Link: https://lore.kernel.org/20250402144953.412882844@goodmis.org Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
1 parent 028a58e commit c44a14f

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

Documentation/admin-guide/kernel-parameters.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7241,6 +7241,8 @@
72417241
This is just one of many ways that can clear memory. Make sure your system
72427242
keeps the content of memory across reboots before relying on this option.
72437243

7244+
NB: Both the mapped address and size must be page aligned for the architecture.
7245+
72447246
See also Documentation/trace/debugging.rst
72457247

72467248

Documentation/trace/debugging.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ kernel, so only the same kernel is guaranteed to work if the mapping is
136136
preserved. Switching to a different kernel version may find a different
137137
layout and mark the buffer as invalid.
138138

139+
NB: Both the mapped address and size must be page aligned for the architecture.
140+
139141
Using trace_printk() in the boot instance
140142
-----------------------------------------
141143
By default, the content of trace_printk() goes into the top level tracing

kernel/trace/trace.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10774,6 +10774,16 @@ __init static void enable_instances(void)
1077410774
}
1077510775

1077610776
if (start) {
10777+
/* Start and size must be page aligned */
10778+
if (start & ~PAGE_MASK) {
10779+
pr_warn("Tracing: mapping start addr %pa is not page aligned\n", &start);
10780+
continue;
10781+
}
10782+
if (size & ~PAGE_MASK) {
10783+
pr_warn("Tracing: mapping size %pa is not page aligned\n", &size);
10784+
continue;
10785+
}
10786+
1077710787
addr = map_pages(start, size);
1077810788
if (addr) {
1077910789
pr_info("Tracing: mapped boot instance %s at physical memory %pa of size 0x%lx\n",

0 commit comments

Comments
 (0)