From: "Steven Rostedt (Google)" <rostedt@xxxxxxxxxxx> 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@xxxxxxxxx/ Link: https://lore.kernel.org/linux-trace-kernel/20221117214249.2addbe10@xxxxxxxxxxxxxxxxxx Cc: Linux Trace Kernel <linux-trace-kernel@xxxxxxxxxxxxxxx> Cc: Tzvetomir Stoyanov <tz.stoyanov@xxxxxxxxx> Cc: Tom Zanussi <zanussi@xxxxxxxxxx> Cc: stable@xxxxxxxxxxxxxxx Fixes: 7491e2c442781 ("tracing: Add a probe that attaches to trace events") Acked-by: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> Reported-by: Rafael Mendonca <rafaelmendsr@xxxxxxxxx> Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx> --- kernel/trace/trace_eprobe.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/trace/trace_eprobe.c b/kernel/trace/trace_eprobe.c index 5dd0617e5df6..9cda9a38422c 100644 --- a/kernel/trace/trace_eprobe.c +++ b/kernel/trace/trace_eprobe.c @@ -563,6 +563,9 @@ static void eprobe_trigger_func(struct event_trigger_data *data, { struct eprobe_data *edata = data->private_data; + if (unlikely(!rec)) + return; + __eprobe_trace_func(edata, rec); } -- 2.35.1