Commit 6a019a92 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Catalin Marinas

arm64: kprobes: Use arch_populate_kprobe_blacklist()

Use arch_populate_kprobe_blacklist() instead of
arch_within_kprobe_blacklist() so that we can see the full
blacklisted symbols under the debugfs.
Acked-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
[catalin.marinas@arm.com: Add arch_populate_kprobe_blacklist() comment]
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 6e08af0f
...@@ -471,26 +471,37 @@ kprobe_breakpoint_handler(struct pt_regs *regs, unsigned int esr) ...@@ -471,26 +471,37 @@ kprobe_breakpoint_handler(struct pt_regs *regs, unsigned int esr)
return DBG_HOOK_HANDLED; return DBG_HOOK_HANDLED;
} }
bool arch_within_kprobe_blacklist(unsigned long addr) /*
* Provide a blacklist of symbols identifying ranges which cannot be kprobed.
* This blacklist is exposed to userspace via debugfs (kprobes/blacklist).
*/
int __init arch_populate_kprobe_blacklist(void)
{ {
if ((addr >= (unsigned long)__kprobes_text_start && int ret;
addr < (unsigned long)__kprobes_text_end) ||
(addr >= (unsigned long)__entry_text_start && ret = kprobe_add_area_blacklist((unsigned long)__entry_text_start,
addr < (unsigned long)__entry_text_end) || (unsigned long)__entry_text_end);
(addr >= (unsigned long)__idmap_text_start && if (ret)
addr < (unsigned long)__idmap_text_end) || return ret;
(addr >= (unsigned long)__hyp_text_start && ret = kprobe_add_area_blacklist((unsigned long)__irqentry_text_start,
addr < (unsigned long)__hyp_text_end) || (unsigned long)__irqentry_text_end);
in_exception_text(addr)) if (ret)
return true; return ret;
ret = kprobe_add_area_blacklist((unsigned long)__exception_text_start,
if (!is_kernel_in_hyp_mode()) { (unsigned long)__exception_text_end);
if ((addr >= (unsigned long)__hyp_idmap_text_start && if (ret)
addr < (unsigned long)__hyp_idmap_text_end)) return ret;
return true; ret = kprobe_add_area_blacklist((unsigned long)__idmap_text_start,
} (unsigned long)__idmap_text_end);
if (ret)
return false; return ret;
ret = kprobe_add_area_blacklist((unsigned long)__hyp_text_start,
(unsigned long)__hyp_text_end);
if (ret || is_kernel_in_hyp_mode())
return ret;
ret = kprobe_add_area_blacklist((unsigned long)__hyp_idmap_text_start,
(unsigned long)__hyp_idmap_text_end);
return ret;
} }
void __kprobes __used *trampoline_probe_handler(struct pt_regs *regs) void __kprobes __used *trampoline_probe_handler(struct pt_regs *regs)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment