Messages in this thread Patch in this message | | | From | Miroslav Benes <> | Subject | [PATCH] ftrace: Free the trampoline when ftrace_startup() fails | Date | Mon, 31 Aug 2020 14:26:31 +0200 |
| |
Commit fc0ea795f53c ("ftrace: Add symbols for ftrace trampolines") missed to remove ops from new ftrace_ops_trampoline_list in ftrace_startup() if ftrace_hash_ipmodify_enable() fails there. It may lead to BUG if such ops come from a module which may be removed.
Moreover, the trampoline itself is not freed in this case.
Fix it by calling ftrace_trampoline_free() during the rollback.
Fixes: fc0ea795f53c ("ftrace: Add symbols for ftrace trampolines") Signed-off-by: Miroslav Benes <mbenes@suse.cz> ---
It would be fair to add
Fixes: f8b8be8a310a ("ftrace, kprobes: Support IPMODIFY flag to find IP modify conflict")
too. The situation was a bit more complicated back then though since RCU-tasks support was missing.
kernel/trace/ftrace.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 275441254bb5..656d7cb5a78c 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -2862,6 +2862,8 @@ int ftrace_startup(struct ftrace_ops *ops, int command) __unregister_ftrace_function(ops); ftrace_start_up--; ops->flags &= ~FTRACE_OPS_FL_ENABLED; + if (ops->flags & FTRACE_OPS_FL_DYNAMIC) + ftrace_trampoline_free(ops); return ret; } -- 2.28.0
| |