Loading arch/arm/include/asm/insn.h +4 −4 Original line number Diff line number Diff line Loading @@ -13,18 +13,18 @@ arm_gen_nop(void) } unsigned long __arm_gen_branch(unsigned long pc, unsigned long addr, bool link); __arm_gen_branch(unsigned long pc, unsigned long addr, bool link, bool warn); static inline unsigned long arm_gen_branch(unsigned long pc, unsigned long addr) { return __arm_gen_branch(pc, addr, false); return __arm_gen_branch(pc, addr, false, true); } static inline unsigned long arm_gen_branch_link(unsigned long pc, unsigned long addr) arm_gen_branch_link(unsigned long pc, unsigned long addr, bool warn) { return __arm_gen_branch(pc, addr, true); return __arm_gen_branch(pc, addr, true, warn); } #endif arch/arm/kernel/ftrace.c +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ int ftrace_arch_code_modify_post_process(void) static unsigned long ftrace_call_replace(unsigned long pc, unsigned long addr) { return arm_gen_branch_link(pc, addr); return arm_gen_branch_link(pc, addr, true); } static int ftrace_modify_code(unsigned long pc, unsigned long old, Loading arch/arm/kernel/insn.c +10 −9 Original line number Diff line number Diff line Loading @@ -3,8 +3,9 @@ #include <linux/kernel.h> #include <asm/opcodes.h> static unsigned long __arm_gen_branch_thumb2(unsigned long pc, unsigned long addr, bool link) static unsigned long __arm_gen_branch_thumb2(unsigned long pc, unsigned long addr, bool link, bool warn) { unsigned long s, j1, j2, i1, i2, imm10, imm11; unsigned long first, second; Loading @@ -12,7 +13,7 @@ __arm_gen_branch_thumb2(unsigned long pc, unsigned long addr, bool link) offset = (long)addr - (long)(pc + 4); if (offset < -16777216 || offset > 16777214) { WARN_ON_ONCE(1); WARN_ON_ONCE(warn); return 0; } Loading @@ -33,8 +34,8 @@ __arm_gen_branch_thumb2(unsigned long pc, unsigned long addr, bool link) return __opcode_thumb32_compose(first, second); } static unsigned long __arm_gen_branch_arm(unsigned long pc, unsigned long addr, bool link) static unsigned long __arm_gen_branch_arm(unsigned long pc, unsigned long addr, bool link, bool warn) { unsigned long opcode = 0xea000000; long offset; Loading @@ -44,7 +45,7 @@ __arm_gen_branch_arm(unsigned long pc, unsigned long addr, bool link) offset = (long)addr - (long)(pc + 8); if (unlikely(offset < -33554432 || offset > 33554428)) { WARN_ON_ONCE(1); WARN_ON_ONCE(warn); return 0; } Loading @@ -54,10 +55,10 @@ __arm_gen_branch_arm(unsigned long pc, unsigned long addr, bool link) } unsigned long __arm_gen_branch(unsigned long pc, unsigned long addr, bool link) __arm_gen_branch(unsigned long pc, unsigned long addr, bool link, bool warn) { if (IS_ENABLED(CONFIG_THUMB2_KERNEL)) return __arm_gen_branch_thumb2(pc, addr, link); return __arm_gen_branch_thumb2(pc, addr, link, warn); else return __arm_gen_branch_arm(pc, addr, link); return __arm_gen_branch_arm(pc, addr, link, warn); } Loading
arch/arm/include/asm/insn.h +4 −4 Original line number Diff line number Diff line Loading @@ -13,18 +13,18 @@ arm_gen_nop(void) } unsigned long __arm_gen_branch(unsigned long pc, unsigned long addr, bool link); __arm_gen_branch(unsigned long pc, unsigned long addr, bool link, bool warn); static inline unsigned long arm_gen_branch(unsigned long pc, unsigned long addr) { return __arm_gen_branch(pc, addr, false); return __arm_gen_branch(pc, addr, false, true); } static inline unsigned long arm_gen_branch_link(unsigned long pc, unsigned long addr) arm_gen_branch_link(unsigned long pc, unsigned long addr, bool warn) { return __arm_gen_branch(pc, addr, true); return __arm_gen_branch(pc, addr, true, warn); } #endif
arch/arm/kernel/ftrace.c +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ int ftrace_arch_code_modify_post_process(void) static unsigned long ftrace_call_replace(unsigned long pc, unsigned long addr) { return arm_gen_branch_link(pc, addr); return arm_gen_branch_link(pc, addr, true); } static int ftrace_modify_code(unsigned long pc, unsigned long old, Loading
arch/arm/kernel/insn.c +10 −9 Original line number Diff line number Diff line Loading @@ -3,8 +3,9 @@ #include <linux/kernel.h> #include <asm/opcodes.h> static unsigned long __arm_gen_branch_thumb2(unsigned long pc, unsigned long addr, bool link) static unsigned long __arm_gen_branch_thumb2(unsigned long pc, unsigned long addr, bool link, bool warn) { unsigned long s, j1, j2, i1, i2, imm10, imm11; unsigned long first, second; Loading @@ -12,7 +13,7 @@ __arm_gen_branch_thumb2(unsigned long pc, unsigned long addr, bool link) offset = (long)addr - (long)(pc + 4); if (offset < -16777216 || offset > 16777214) { WARN_ON_ONCE(1); WARN_ON_ONCE(warn); return 0; } Loading @@ -33,8 +34,8 @@ __arm_gen_branch_thumb2(unsigned long pc, unsigned long addr, bool link) return __opcode_thumb32_compose(first, second); } static unsigned long __arm_gen_branch_arm(unsigned long pc, unsigned long addr, bool link) static unsigned long __arm_gen_branch_arm(unsigned long pc, unsigned long addr, bool link, bool warn) { unsigned long opcode = 0xea000000; long offset; Loading @@ -44,7 +45,7 @@ __arm_gen_branch_arm(unsigned long pc, unsigned long addr, bool link) offset = (long)addr - (long)(pc + 8); if (unlikely(offset < -33554432 || offset > 33554428)) { WARN_ON_ONCE(1); WARN_ON_ONCE(warn); return 0; } Loading @@ -54,10 +55,10 @@ __arm_gen_branch_arm(unsigned long pc, unsigned long addr, bool link) } unsigned long __arm_gen_branch(unsigned long pc, unsigned long addr, bool link) __arm_gen_branch(unsigned long pc, unsigned long addr, bool link, bool warn) { if (IS_ENABLED(CONFIG_THUMB2_KERNEL)) return __arm_gen_branch_thumb2(pc, addr, link); return __arm_gen_branch_thumb2(pc, addr, link, warn); else return __arm_gen_branch_arm(pc, addr, link); return __arm_gen_branch_arm(pc, addr, link, warn); }