diff options
author | Peter Zijlstra <peterz@infradead.org> | 2021-05-06 21:33:57 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2021-05-12 14:54:55 +0200 |
commit | f9510fa9caaf8229381d5f86ba0774bf1a6ca39b (patch) | |
tree | 2301f5aaa097681484c4659bda03ddbeb9b318ec | |
parent | e1aa35c4c4bc71e44dabc9d7d167b807edd7b439 (diff) | |
download | linux-f9510fa9caaf8229381d5f86ba0774bf1a6ca39b.tar.bz2 |
jump_label, x86: Improve error when we fail expected text
There is only a single usage site left, remove the function and extend
the print to include more information, like the expected text and the
patch type.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20210506194157.726939027@infradead.org
-rw-r--r-- | arch/x86/kernel/jump_label.c | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c index 6a2eb62c85e6..638d3b9be0ad 100644 --- a/arch/x86/kernel/jump_label.c +++ b/arch/x86/kernel/jump_label.c @@ -16,37 +16,32 @@ #include <asm/alternative.h> #include <asm/text-patching.h> -static void bug_at(const void *ip, int line) -{ - /* - * The location is not an op that we were expecting. - * Something went wrong. Crash the box, as something could be - * corrupting the kernel. - */ - pr_crit("jump_label: Fatal kernel bug, unexpected op at %pS [%p] (%5ph) %d\n", ip, ip, ip, line); - BUG(); -} - static const void * __jump_label_set_jump_code(struct jump_entry *entry, enum jump_label_type type) { const void *expect, *code; const void *addr, *dest; - int line; addr = (void *)jump_entry_code(entry); dest = (void *)jump_entry_target(entry); code = text_gen_insn(JMP32_INSN_OPCODE, addr, dest); - if (type == JUMP_LABEL_JMP) { - expect = x86_nops[5]; line = __LINE__; - } else { - expect = code; line = __LINE__; - } + if (type == JUMP_LABEL_JMP) + expect = x86_nops[5]; + else + expect = code; - if (memcmp(addr, expect, JUMP_LABEL_NOP_SIZE)) - bug_at(addr, line); + if (memcmp(addr, expect, JUMP_LABEL_NOP_SIZE)) { + /* + * The location is not an op that we were expecting. + * Something went wrong. Crash the box, as something could be + * corrupting the kernel. + */ + pr_crit("jump_label: Fatal kernel bug, unexpected op at %pS [%p] (%5ph != %5ph)) type:%d\n", + addr, addr, addr, expect, type); + BUG(); + } if (type == JUMP_LABEL_NOP) code = x86_nops[5]; |