mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
ftrace: Add missing ftrace_lock to update_ftrace_direct_add/del
Ihor and Kumar reported splat from ftrace_get_addr_curr [1], which happened because of the missing ftrace_lock in update_ftrace_direct_add/del functions allowing concurrent access to ftrace internals. The ftrace_update_ops function must be guarded by ftrace_lock, adding that. Fixes:05dc5e9c1f("ftrace: Add update_ftrace_direct_add function") Fixes:8d2c1233f3("ftrace: Add update_ftrace_direct_del function") Reported-by: Ihor Solodrai <ihor.solodrai@linux.dev> Reported-by: Kumar Kartikeya Dwivedi <memxor@gmail.com> Closes: https://lore.kernel.org/bpf/1b58ffb2-92ae-433a-ba46-95294d6edea2@linux.dev/ Tested-by: Ihor Solodrai <ihor.solodrai@linux.dev> Signed-off-by: Jiri Olsa <jolsa@kernel.org> Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org> Link: https://lore.kernel.org/r/20260302081622.165713-1-jolsa@kernel.org Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
af4e9ef3d7
commit
3ebc98c1ae
1 changed files with 2 additions and 0 deletions
|
|
@ -6404,6 +6404,7 @@ int update_ftrace_direct_add(struct ftrace_ops *ops, struct ftrace_hash *hash)
|
|||
new_filter_hash = old_filter_hash;
|
||||
}
|
||||
} else {
|
||||
guard(mutex)(&ftrace_lock);
|
||||
err = ftrace_update_ops(ops, new_filter_hash, EMPTY_HASH);
|
||||
/*
|
||||
* new_filter_hash is dup-ed, so we need to release it anyway,
|
||||
|
|
@ -6530,6 +6531,7 @@ int update_ftrace_direct_del(struct ftrace_ops *ops, struct ftrace_hash *hash)
|
|||
ops->func_hash->filter_hash = NULL;
|
||||
}
|
||||
} else {
|
||||
guard(mutex)(&ftrace_lock);
|
||||
err = ftrace_update_ops(ops, new_filter_hash, EMPTY_HASH);
|
||||
/*
|
||||
* new_filter_hash is dup-ed, so we need to release it anyway,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue