Commit c45c585d authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt (Google)
Browse files

ftrace: Free ftrace hashes after they are replaced in the subops code

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: 0ae6b8ce ("ftrace: Fix accounting of subop hashes")
Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
parent 08275e59
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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;
	}
@@ -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 */