Messages in this thread | | | Subject | Re: [PATCH 3/3] kprobes/x86: Simplify indirect-jump check in retpoline | From | Zhenzhong Duan <> | Date | Wed, 31 Oct 2018 14:01:20 +0800 |
| |
On 2018/10/30 16:36, Peter Zijlstra wrote: > On Mon, Oct 29, 2018 at 11:55:06PM -0700, Zhenzhong Duan wrote: >> Since CONFIG_RETPOLINE hard depends on compiler support now, so >> replacing indirect-jump check with the range check is safe in that case. > > Can we put kprobes on module init text before we run alternatives on it?
Forgive me I doesn't understand your question. Do you mean this patch impact kprobes on module init text?
> >> @@ -240,20 +242,16 @@ static int insn_jump_into_range(struct insn *insn, unsigned long start, int len) >> >> static int insn_is_indirect_jump(struct insn *insn) >> { >> - int ret = __insn_is_indirect_jump(insn); >> + int ret; >> >> #ifdef CONFIG_RETPOLINE >> - /* >> - * Jump to x86_indirect_thunk_* is treated as an indirect jump. >> - * Note that even with CONFIG_RETPOLINE=y, the kernel compiled with >> - * older gcc may use indirect jump. So we add this check instead of >> - * replace indirect-jump check. >> - */ >> - if (!ret) >> + /* Jump to x86_indirect_thunk_* is treated as an indirect jump. */ >> ret = insn_jump_into_range(insn, >> (unsigned long)__indirect_thunk_start, >> (unsigned long)__indirect_thunk_end - >> (unsigned long)__indirect_thunk_start); >> +#else >> + ret = __insn_is_indirect_jump(insn); >> #endif >> return ret; >> } > > The resulting code is indented wrong. >
Oh, yes. Thanks for point out.
Zhenzhong
| |