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

Reply via email to