Skip to content

Commit

Permalink
ftrace: Free ftrace hashes after they are replaced in the subops code
Browse files Browse the repository at this point in the history
The subops processing creates new hashes when adding and removing subops.
There were some places that the old hashes that were replaced were not
freed and this caused some memory leaks.

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Link: https://lore.kernel.org/20250417135939.245b128d@gandalf.local.home
Fixes: 0ae6b8c ("ftrace: Fix accounting of subop hashes")
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
  • Loading branch information
Steven Rostedt committed Apr 17, 2025
1 parent 08275e5 commit c45c585
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion kernel/trace/ftrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -3609,6 +3609,9 @@ static int rebuild_hashes(struct ftrace_hash **filter_hash, struct ftrace_hash *
}
}

free_ftrace_hash(temp_hash.filter_hash);
free_ftrace_hash(temp_hash.notrace_hash);

temp_hash.filter_hash = *filter_hash;
temp_hash.notrace_hash = *notrace_hash;
}
Expand Down Expand Up @@ -3703,8 +3706,11 @@ static int ftrace_hash_move_and_update_subops(struct ftrace_ops *subops,
}

ret = rebuild_hashes(&filter_hash, &notrace_hash, ops);
if (!ret)
if (!ret) {
ret = ftrace_update_ops(ops, filter_hash, notrace_hash);
free_ftrace_hash(filter_hash);
free_ftrace_hash(notrace_hash);
}

if (ret) {
/* Put back the original hash */
Expand Down

0 comments on commit c45c585

Please sign in to comment.