[PATCH 6.0 204/314] tracing: Fix race where eprobes can be called before the event
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2022-11-23 10:01:51
Also in:
linux-patches, stable
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2022-11-23 10:01:51
Also in:
linux-patches, stable
From: Steven Rostedt (Google) <rostedt@goodmis.org> commit 94eedf3dded5fb472ce97bfaf3ac1c6c29c35d26 upstream. The flag that tells the event to call its triggers after reading the event is set for eprobes after the eprobe is enabled. This leads to a race where the eprobe may be triggered at the beginning of the event where the record information is NULL. The eprobe then dereferences the NULL record causing a NULL kernel pointer bug. Test for a NULL record to keep this from happening. Link: https://lore.kernel.org/linux-trace-kernel/20221116192552.1066630-1-rafaelmendsr@gmail.com/ (local) Link: https://lore.kernel.org/linux-trace-kernel/20221117214249.2addbe10@gandalf.local.home (local) Cc: Linux Trace Kernel <redacted> Cc: Tzvetomir Stoyanov <redacted> Cc: Tom Zanussi <zanussi@kernel.org> Cc: stable@vger.kernel.org Fixes: 7491e2c442781 ("tracing: Add a probe that attaches to trace events") Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Reported-by: Rafael Mendonca <redacted> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- kernel/trace/trace_eprobe.c | 3 +++ 1 file changed, 3 insertions(+)
--- a/kernel/trace/trace_eprobe.c
+++ b/kernel/trace/trace_eprobe.c@@ -560,6 +560,9 @@ static void eprobe_trigger_func(struct e { struct eprobe_data *edata = data->private_data; + if (unlikely(!rec)) + return; + __eprobe_trace_func(edata, rec); }