All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tracing: Fix potential double free in create_var_ref()
@ 2022-04-22  6:00 Keita Suzuki
  2022-04-22 15:13 ` Masami Hiramatsu
  0 siblings, 1 reply; 6+ messages in thread
From: Keita Suzuki @ 2022-04-22  6:00 UTC (permalink / raw)
  Cc: mhiramat, keitasuzuki.park, Steven Rostedt, Ingo Molnar, linux-kernel

In create_var_ref(), init_var_ref() is called to initialize the fields
of variable ref_field, which is allocated in the previous function call
to create_hist_field(). Function init_var_ref() allocates the
corresponding fields such as ref_field->system, but frees these fields
when the function encounters an error. The caller later calls
destroy_hist_field() to conduct error handling, which frees the fields
and the variable itself. This results in double free of the fields which
are already freed in the previous function.

Fix this by storing NULL to the corresponding fields when they are freed
in init_var_ref().

Signed-off-by: Keita Suzuki <keitasuzuki.park@sslab.ics.keio.ac.jp>
---
 kernel/trace/trace_events_hist.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
index 44db5ba9cabb..a0e41906d9ce 100644
--- a/kernel/trace/trace_events_hist.c
+++ b/kernel/trace/trace_events_hist.c
@@ -2093,8 +2093,11 @@ static int init_var_ref(struct hist_field *ref_field,
 	return err;
  free:
 	kfree(ref_field->system);
+	ref_field->system = NULL;
 	kfree(ref_field->event_name);
+	ref_field->event_name = NULL;
 	kfree(ref_field->name);
+	ref_field->name = NULL;
 
 	goto out;
 }
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-04-25 15:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-22  6:00 [PATCH] tracing: Fix potential double free in create_var_ref() Keita Suzuki
2022-04-22 15:13 ` Masami Hiramatsu
2022-04-25  6:28   ` Keita Suzuki
2022-04-25  6:37   ` [PATCH V2] " Keita Suzuki
2022-04-25 15:29     ` Steven Rostedt
2022-04-25 14:59   ` [PATCH] " Tom Zanussi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.