As for 'static data relocations', instead of patching an instruction (OR ops), it should be assigned to value directly. Signed-off-by: Pingfan Liu <piliu@xxxxxxxxxx> Cc: Geoff Levand <geoff@xxxxxxxxxxxxx> Cc: Catalin Marinas <catalin.marinas@xxxxxxx> Cc: Simon Horman <horms@xxxxxxxxxxxx> To: kexec@xxxxxxxxxxxxxxxxxxx --- kexec/arch/arm64/kexec-arm64.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c index 311731d..ec6df4b 100644 --- a/kexec/arch/arm64/kexec-arm64.c +++ b/kexec/arch/arm64/kexec-arm64.c @@ -1249,13 +1249,12 @@ void machine_apply_elf_rel(struct mem_ehdr *ehdr, struct mem_sym *UNUSED(sym), case R_AARCH64_ABS64: type = "ABS64"; loc64 = ptr; - *loc64 = cpu_to_elf64(ehdr, elf64_to_cpu(ehdr, *loc64) + value); + *loc64 = cpu_to_elf64(ehdr, value); break; case R_AARCH64_PREL32: type = "PREL32"; loc32 = ptr; - *loc32 = cpu_to_elf32(ehdr, - elf32_to_cpu(ehdr, *loc32) + value - address); + *loc32 = cpu_to_elf32(ehdr, value - address); break; /* Set a MOV[KZ] immediate field to bits [15:0] of X. No overflow check */ -- 2.31.1 _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec