tracing: Fix trace_adjust_address() when there is no modules in scratch area
authorSteven Rostedt <rostedt@goodmis.org>
Thu, 1 May 2025 19:19:09 +0000 (15:19 -0400)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Thu, 1 May 2025 20:06:55 +0000 (16:06 -0400)
commit1be8e54a1e0f0a4bf70e3d65f94ca1738ee4f1f3
treeaaa816ac1acc6f62d6092cb60a92d357cc834fbc
parent3c1d9cfa8458a4d6b6cd9bc3ca7bb1591130a31c
tracing: Fix trace_adjust_address() when there is no modules in scratch area

The function trace_adjust_address() is used to map addresses of modules
stored in the persistent memory and are also loaded in the current boot to
return the current address for the module.

If there's only one module entry, it will simply use that, otherwise it
performs a bsearch of the entry array to find the modules to offset with.

The issue is if there are no modules in the array. The code does not
account for that and ends up referencing the first element in the array
which does not exist and causes a crash.

If nr_entries is zero, exit out early as if this was a core kernel
address.

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Link: https://lore.kernel.org/20250501151909.65910359@gandalf.local.home
Fixes: 35a380ddbc653 ("tracing: Show last module text symbols in the stacktrace")
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/trace.c