diff options
| author | Yu Peng <pengyu@kylinos.cn> | 2026-06-03 14:25:33 +0800 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2026-07-07 13:59:55 -0400 |
| commit | 05074bb90af94f2acbbc8f8ffaa507f914c273c8 (patch) | |
| tree | a29b2d4df3768424e5382bef1b047808c3f0b600 /kernel/trace | |
| parent | 50fd6dd755c6e48a38af2fa4621167eea56829c2 (diff) | |
tracing/synthetic: Free type string on error path
parse_synth_field() builds a "__data_loc ..." type string before
assigning it to field->type. If the seq_buf check fails, the common
cleanup cannot free the temporary string. Free it before leaving.
Link: https://patch.msgid.link/20260603062533.1096320-2-pengyu@kylinos.cn
Signed-off-by: Yu Peng <pengyu@kylinos.cn>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/trace_events_synth.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_synth.c index cdd5b9332835..dc15658a887c 100644 --- a/kernel/trace/trace_events_synth.c +++ b/kernel/trace/trace_events_synth.c @@ -839,8 +839,10 @@ static struct synth_field *parse_synth_field(int argc, char **argv, seq_buf_puts(&s, "__data_loc "); seq_buf_puts(&s, field->type); - if (WARN_ON_ONCE(!seq_buf_buffer_left(&s))) + if (WARN_ON_ONCE(!seq_buf_buffer_left(&s))) { + kfree(type); goto free; + } s.buffer[s.len] = '\0'; kfree(field->type); |
