projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
46c7405
)
objtool/x86: Fix elf_add_alternative() endianness
author
Vasily Gorbik
<gor@linux.ibm.com>
Wed, 12 May 2021 17:42:13 +0000
(19:42 +0200)
committer
Ingo Molnar
<mingo@kernel.org>
Wed, 12 May 2021 19:17:01 +0000
(21:17 +0200)
Currently x86 kernel cross-compiled on big endian system fails at boot with:
kernel BUG at arch/x86/kernel/alternative.c:258!
Corresponding bug condition look like the following:
BUG_ON(feature >= (NCAPINTS + NBUGINTS) * 32);
Fix that by converting alternative feature/cpuid to target endianness.
Fixes:
9bc0bb50727c
("objtool/x86: Rewrite retpoline thunk calls")
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link:
https://lore.kernel.org/r/patch-2.thread-6c9df9.git-6c9df9a8098d.your-ad-here.call-01620841104-ext-2554@work.hours
tools/objtool/arch/x86/decode.c
patch
|
blob
|
history
diff --git
a/tools/objtool/arch/x86/decode.c
b/tools/objtool/arch/x86/decode.c
index
cedf3ed
..
24295d3
100644
(file)
--- a/
tools/objtool/arch/x86/decode.c
+++ b/
tools/objtool/arch/x86/decode.c
@@
-19,6
+19,7
@@
#include <objtool/elf.h>
#include <objtool/arch.h>
#include <objtool/warn.h>
+#include <objtool/endianness.h>
#include <arch/elf.h>
static int is_x86_64(const struct elf *elf)
@@
-725,7
+726,7
@@
static int elf_add_alternative(struct elf *elf,
return -1;
}
- alt->cpuid =
cpuid
;
+ alt->cpuid =
bswap_if_needed(cpuid)
;
alt->instrlen = orig_len;
alt->replacementlen = repl_len;