summaryrefslogtreecommitdiff
path: root/arch/x86/kernel/alternative.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2019-10-09 12:44:14 +0200
committerIngo Molnar <mingo@kernel.org>2019-11-27 07:44:24 +0100
commit67c1d4a28064f9ec63df03f7798e4a334176a9cd (patch)
tree6194a25303109c696bfd23f85b8d3e27c263a353 /arch/x86/kernel/alternative.c
parent254d2c04515ea4532a503cc5d8649e1513042e56 (diff)
x86/ftrace: Use text_gen_insn()
Replace the ftrace_code_union with the generic text_gen_insn() helper, which does exactly this. Tested-by: Alexei Starovoitov <ast@kernel.org> Tested-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Alexei Starovoitov <ast@kernel.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: https://lkml.kernel.org/r/20191111132457.932808000@infradead.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/kernel/alternative.c')
-rw-r--r--arch/x86/kernel/alternative.c26
1 files changed, 0 insertions, 26 deletions
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index f8f34f94d13d..cfcfadf5cc80 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -1247,29 +1247,3 @@ void __ref text_poke_bp(void *addr, const void *opcode, size_t len, const void *
text_poke_loc_init(&tp, addr, opcode, len, emulate);
text_poke_bp_batch(&tp, 1);
}
-
-union text_poke_insn {
- u8 text[POKE_MAX_OPCODE_SIZE];
- struct {
- u8 opcode;
- s32 disp;
- } __attribute__((packed));
-};
-
-void *text_gen_insn(u8 opcode, const void *addr, const void *dest)
-{
- static union text_poke_insn insn; /* text_mutex */
- int size = text_opcode_size(opcode);
-
- lockdep_assert_held(&text_mutex);
-
- insn.opcode = opcode;
-
- if (size > 1) {
- insn.disp = (long)dest - (long)(addr + size);
- if (size == 2)
- BUG_ON((insn.disp >> 31) != (insn.disp >> 7));
- }
-
- return &insn.text;
-}