diff options
author | Steven Rostedt (Google) <[email protected]> | 2022-11-17 21:42:49 -0500 |
---|---|---|
committer | Steven Rostedt (Google) <[email protected]> | 2022-11-20 14:05:50 -0500 |
commit | 94eedf3dded5fb472ce97bfaf3ac1c6c29c35d26 (patch) | |
tree | 233feca1ebea1094b096d6a1378047cd37eaece7 | |
parent | 067df9e0ad48a97382ab2179bbe773a13a846028 (diff) |
tracing: Fix race where eprobes can be called before the event
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/[email protected]/
Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
Cc: Linux Trace Kernel <[email protected]>
Cc: Tzvetomir Stoyanov <[email protected]>
Cc: Tom Zanussi <[email protected]>
Cc: [email protected]
Fixes: 7491e2c442781 ("tracing: Add a probe that attaches to trace events")
Acked-by: Masami Hiramatsu (Google) <[email protected]>
Reported-by: Rafael Mendonca <[email protected]>
Signed-off-by: Steven Rostedt (Google) <[email protected]>
-rw-r--r-- | kernel/trace/trace_eprobe.c | 3 |
1 files changed, 3 insertions, 0 deletions
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); } |