tracing: Fix trace_check_vprintf() when tp_printk is used
[ Upstream commit 50a3242d ] When the tp_printk kernel command line is used, the trace events go directly to printk(). It is still checked via the trace_check_vprintf() function to make sure the pointers of the trace event are legit. The addition of reading buffers from previous boots required adding a delta between the addresses of the previous boot and the current boot so that the pointers in the old buffer can still be used. But this required adding a trace_array pointer to acquire the delta offsets. The tp_printk code does not provide a trace_array (tr) pointer, so when the offsets were examined, a NULL pointer dereference happened and the kernel crashed. If the trace_array does not exist, just default the delta offsets to zero, as that also means the trace event is not being read from a previous boot. Link: https://lore.kernel.org/all/Zv3z5UsG_jsO9_Tb@aschofie-mobl2.lan/ Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Link: https://lore.kernel.org/20241003104925.4e1b1fd9@gandalf.local.home Fixes: 07714b4b ("tracing: Handle old buffer mappings for event strings and functions") Reported-by:Alison Schofield <alison.schofield@intel.com> Tested-by:
Alison Schofield <alison.schofield@intel.com> Signed-off-by:
Steven Rostedt (Google) <rostedt@goodmis.org> Stable-dep-of: afd2627f ("tracing: Check "%s" dereference via the field and not the TP_printk format") Signed-off-by:
Sasha Levin <sashal@kernel.org>
Loading
Please sign in to comment