forked from Minki/linux
arm64: fix endianness annotation for aarch64_insn_write()
aarch64_insn_write() is used to write an instruction. As on ARM64 in-memory instructions are always stored in little-endian order, this function, taking the instruction opcode in native order, correctly convert it to little-endian before sending it to an helper function __aarch64_insn_write() which will do the effective write. This is all good, but the variable and argument holding the converted value are not annotated for a little-endian value but left for native values. Fix this by adjusting the prototype of the helper and directly using the result of cpu_to_le32() without passing by an intermediate variable (which was not a distinct one but the same as the one holding the native value). Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
This commit is contained in:
parent
65de142143
commit
57c138357d
@ -126,7 +126,7 @@ int __kprobes aarch64_insn_read(void *addr, u32 *insnp)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __kprobes __aarch64_insn_write(void *addr, u32 insn)
|
static int __kprobes __aarch64_insn_write(void *addr, __le32 insn)
|
||||||
{
|
{
|
||||||
void *waddr = addr;
|
void *waddr = addr;
|
||||||
unsigned long flags = 0;
|
unsigned long flags = 0;
|
||||||
@ -145,8 +145,7 @@ static int __kprobes __aarch64_insn_write(void *addr, u32 insn)
|
|||||||
|
|
||||||
int __kprobes aarch64_insn_write(void *addr, u32 insn)
|
int __kprobes aarch64_insn_write(void *addr, u32 insn)
|
||||||
{
|
{
|
||||||
insn = cpu_to_le32(insn);
|
return __aarch64_insn_write(addr, cpu_to_le32(insn));
|
||||||
return __aarch64_insn_write(addr, insn);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool __kprobes __aarch64_insn_hotpatch_safe(u32 insn)
|
static bool __kprobes __aarch64_insn_hotpatch_safe(u32 insn)
|
||||||
|
Loading…
Reference in New Issue
Block a user