kprobes: Fix to check symbol prefixes correctly

Since str_has_prefix() takes the prefix as the 2nd argument and the string
as the first, is_cfi_preamble_symbol() always fails to check the prefix.
Fix the function parameter order so that it correctly check the prefix.

Link: https://lore.kernel.org/all/172260679559.362040.7360872132937227206.stgit@devnote2/

Fixes: de02f2ac5d ("kprobes: Prohibit probing on CFI preamble symbol")
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
This commit is contained in:
Masami Hiramatsu (Google) 2024-08-02 22:53:15 +09:00
parent 0e8b53979a
commit 8c8acb8f26

View File

@ -1557,8 +1557,8 @@ static bool is_cfi_preamble_symbol(unsigned long addr)
if (lookup_symbol_name(addr, symbuf)) if (lookup_symbol_name(addr, symbuf))
return false; return false;
return str_has_prefix("__cfi_", symbuf) || return str_has_prefix(symbuf, "__cfi_") ||
str_has_prefix("__pfx_", symbuf); str_has_prefix(symbuf, "__pfx_");
} }
static int check_kprobe_address_safe(struct kprobe *p, static int check_kprobe_address_safe(struct kprobe *p,