summaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2017-06-28 16:58:09 +0200
committerWill Deacon <will.deacon@arm.com>2017-06-29 11:02:42 +0100
commit65de142143206c7ffd98b0fcb062a79b3c6f1934 (patch)
treea53d283105affccea93f5c0189bb5d8af0f9e605 /arch/arm64/kernel
parent6cf5d4af83e04f4cfae91bfdefd9d4d6949c09b2 (diff)
downloadlinux-stable-65de142143206c7ffd98b0fcb062a79b3c6f1934.tar.gz
linux-stable-65de142143206c7ffd98b0fcb062a79b3c6f1934.tar.bz2
linux-stable-65de142143206c7ffd98b0fcb062a79b3c6f1934.zip
arm64: fix endianness annotation in aarch64_insn_read()
The function arch64_insn_read() is used to read an instruction. On AM64 instructions are always stored in little-endian order and thus the function correctly do a little-to-native endian conversion to the value just read. However, the variable used to hold the value before the conversion is not declared for a little-endian value but for a native one. Fix this by using the correct type for the declaration: __le32 Note: This only works because the function reading the value, probe_kernel_read((), takes a void pointer and void pointers are endian-agnostic. Otherwise probe_kernel_read() should also be properly annotated (or worse, need to be specialized). Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/kernel')
-rw-r--r--arch/arm64/kernel/insn.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c
index b884a926a632..d4d80b32cb69 100644
--- a/arch/arm64/kernel/insn.c
+++ b/arch/arm64/kernel/insn.c
@@ -117,7 +117,7 @@ static void __kprobes patch_unmap(int fixmap)
int __kprobes aarch64_insn_read(void *addr, u32 *insnp)
{
int ret;
- u32 val;
+ __le32 val;
ret = probe_kernel_read(&val, addr, AARCH64_INSN_SIZE);
if (!ret)