]> www.infradead.org Git - users/willy/xarray.git/commit
tracing/timerlat: Only clear timer if a kthread exists
authorSteven Rostedt <rostedt@goodmis.org>
Thu, 5 Sep 2024 12:53:30 +0000 (08:53 -0400)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Thu, 5 Sep 2024 15:30:23 +0000 (11:30 -0400)
commite6a53481da292d970d1edf0d8831121d1c5e2f0d
treec9b2b403897c010a5bc1c61ddc7c95b4373338f6
parent177e1cc2f41235c145041eed03ef5bab18f32328
tracing/timerlat: Only clear timer if a kthread exists

The timerlat tracer can use user space threads to check for osnoise and
timer latency. If the program using this is killed via a SIGTERM, the
threads are shutdown one at a time and another tracing instance can start
up resetting the threads before they are fully closed. That causes the
hrtimer assigned to the kthread to be shutdown and freed twice when the
dying thread finally closes the file descriptors, causing a use-after-free
bug.

Only cancel the hrtimer if the associated thread is still around. Also add
the interface_lock around the resetting of the tlat_var->kthread.

Note, this is just a quick fix that can be backported to stable. A real
fix is to have a better synchronization between the shutdown of old
threads and the starting of new ones.

Link: https://lore.kernel.org/all/20240820130001.124768-1-tglozar@redhat.com/
Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: "Luis Claudio R. Goncalves" <lgoncalv@redhat.com>
Link: https://lore.kernel.org/20240905085330.45985730@gandalf.local.home
Fixes: e88ed227f639e ("tracing/timerlat: Add user-space interface")
Reported-by: Tomas Glozar <tglozar@redhat.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/trace_osnoise.c