From 35fdbb5e0e404f21437dafec3d99bb3258f4cb99 Mon Sep 17 00:00:00 2001 From: eshiner Date: Tue, 5 Aug 2025 16:19:50 +0800 Subject: [PATCH] upatch-manage: fix debug log kernel address leak issue Signed-off-by: eshiner --- upatch-manage/arch/arm64/patch_load.c | 13 ++----------- upatch-manage/arch/x86/patch_load.c | 14 +++++--------- upatch-manage/kernel_compat.c | 1 - upatch-manage/patch_load.c | 9 ++++----- 4 files changed, 11 insertions(+), 26 deletions(-) diff --git a/upatch-manage/arch/arm64/patch_load.c b/upatch-manage/arch/arm64/patch_load.c index f11558b..880b335 100644 --- a/upatch-manage/arch/arm64/patch_load.c +++ b/upatch-manage/arch/arm64/patch_load.c @@ -193,8 +193,6 @@ unsigned long setup_got_table(struct patch_context *ctx, unsigned long jmp_addr, jmp[index + 1] = tls_addr; table->cur += entry_num; - log_debug("\tsetup got table 0x%lx -> 0x%lx, tls_addr=0x%lx\n", - entry_addr, jmp_addr, tls_addr); return entry_addr; } @@ -221,8 +219,6 @@ unsigned long insert_plt_table(struct patch_context *ctx, unsigned long r_type, else elf_addr = setup_jmp_table_with_plt(ctx, jmp_addr, (unsigned long)(uintptr_t)addr); - log_debug("jump: 0x%lx: jmp_addr=0x%lx, tls_addr=0x%lx\n", - elf_addr, jmp_addr, tls_addr); out: return elf_addr; @@ -314,8 +310,6 @@ static inline u32 insert_insn_imm(enum aarch64_insn_imm_type imm_type, void *pla insn = le32_to_cpu(*(__le32 *)place); new_insn = aarch64_insn_encode_immediate(imm_type, insn, imm); - log_debug("\tinsert imm, P=0x%llx, insn=0x%x, imm_type=%d, imm=0x%llx, new_insn=0x%x\n", - (u64)place, insn, imm_type, imm, new_insn); return new_insn; } @@ -341,7 +335,6 @@ int apply_relocate_add(struct patch_context *ctx, unsigned int relsec) // sh_addralign = dest, is the section start in VMA pole void *sec_kaddr = (void *)shdrs[reloc_sec].sh_addr; void *sec_vaddr = (void *)shdrs[reloc_sec].sh_addralign; - log_debug("sec_kaddr = 0x%llx sec_vaddr = 0x%llx\n", (u64)sec_kaddr, (u64)sec_vaddr); for (i = 0; i < shdrs[relsec].sh_size / sizeof(*rel); i++) { /* corresponds to P in the kernel space */ @@ -358,9 +351,8 @@ int apply_relocate_add(struct patch_context *ctx, unsigned int relsec) sym_addr = (s64)(sym->st_value + rel[i].r_addend); log_debug("'%s'\t type %d r_offset=0x%llx, st_value=0x%llx, r_addend=0x%llx\n", sym_name, (int)ELF_R_TYPE(rel[i].r_info), rel[i].r_offset, sym->st_value, rel[i].r_addend); - log_debug("\t(S + A) = 0x%llx \tP(kernel) = 0x%Lx \tP(user) = 0x%Lx\n", - sym_addr, (u64)reloc_place, (u64)ureloc_place); - log_debug("\t(before) *reloc_place = 0x%llx\n", *(u64*)reloc_place); + log_debug("\t(S + A) = 0x%llx \tP(user) = 0x%Lx\n", + sym_addr, (u64)ureloc_place); /* Perform the static relocation. */ switch (ELF_R_TYPE(rel[i].r_info)) { @@ -580,7 +572,6 @@ int apply_relocate_add(struct patch_context *ctx, unsigned int relsec) ELF_R_TYPE(rel[i].r_info)); return -ENOEXEC; } - log_debug("\t(after) *reloc_place = 0x%llx, result = 0x%llx\n", *(u64*)reloc_place, result); } return 0; diff --git a/upatch-manage/arch/x86/patch_load.c b/upatch-manage/arch/x86/patch_load.c index b08beaf..514f621 100644 --- a/upatch-manage/arch/x86/patch_load.c +++ b/upatch-manage/arch/x86/patch_load.c @@ -117,8 +117,6 @@ unsigned long setup_got_table(struct patch_context *ctx, unsigned long jmp_addr, jmp[index + 1] = tls_addr; table->cur += NORMAL_JMP_ENTRY_NUM; - log_debug("\tsetup got table at 0x%lx -> 0x%lx, tls_addr = 0x%lx\n", - entry_addr, jmp_addr, tls_addr); return entry_addr; } @@ -135,7 +133,6 @@ unsigned long insert_plt_table(struct patch_context *ctx, unsigned long r_type, elf_addr = setup_jmp_table(ctx, jmp_addr, false); - log_debug("PLT: 0x%lx -> 0x%lx\n", elf_addr, jmp_addr); out: return elf_addr; @@ -192,8 +189,8 @@ int apply_relocate_add(struct patch_context *ctx, unsigned int relsec) void *sec_vaddr = (void *)shdrs[reloc_sec].sh_addralign; log_debug("Applying relocate section %u to %u\n", relsec, reloc_sec); - log_debug("section %d: kernel address = 0x%llx, virtual address = 0x%llx\n", - reloc_sec, (u64)sec_kaddr, (u64)sec_vaddr); + log_debug("section %d: virtual address = 0x%llx\n", + reloc_sec, (u64)sec_vaddr); for (i = 0; i < shdrs[relsec].sh_size / sizeof(*rel); i++) { /* This is where to make the change, calculate it from kernel address. */ @@ -214,9 +211,9 @@ int apply_relocate_add(struct patch_context *ctx, unsigned int relsec) log_debug("'%s'\t type %d st_value 0x%llx r_addend %ld r_offset 0x%llx\n", name, (int)ELF_R_TYPE(rel[i].r_info), sym->st_value, (long int)rel[i].r_addend, rel[i].r_offset); - log_debug("\t(S + A) = 0x%llx \tP(kernel) = 0x%Lx \tP(user) = 0x%Lx\n", - sym_addr, (u64)reloc_place, (u64)ureloc_place); - log_debug("\t(before) *reloc_place = 0x%llx\n", *(u64*)reloc_place); + log_debug("\t(S + A) = 0x%llx \tP(user) = 0x%Lx\n", + sym_addr, (u64)ureloc_place); + switch (ELF_R_TYPE(rel[i].r_info)) { case R_X86_64_NONE: break; @@ -271,7 +268,6 @@ int apply_relocate_add(struct patch_context *ctx, unsigned int relsec) log_err("\tUnknown rela relocation: %llu\n", ELF_R_TYPE(rel[i].r_info)); return -ENOEXEC; } - log_debug("\t(after) *reloc_place = 0x%llx\n", *(u64*)reloc_place); } return 0; diff --git a/upatch-manage/kernel_compat.c b/upatch-manage/kernel_compat.c index 56214b8..a4ffc1f 100644 --- a/upatch-manage/kernel_compat.c +++ b/upatch-manage/kernel_compat.c @@ -178,7 +178,6 @@ int __init kernel_compat_init(void) } symbol_name = *name; do_mprotect_pkey = addr; - log_debug("kernel symbol '%s' is at 0x%lx\n", symbol_name, (unsigned long)addr); break; } diff --git a/upatch-manage/patch_load.c b/upatch-manage/patch_load.c index 85727c3..44a608f 100644 --- a/upatch-manage/patch_load.c +++ b/upatch-manage/patch_load.c @@ -234,7 +234,6 @@ static int do_alloc_patch_memory(struct patch_context *ctx) ctx->layout.kbase = (void *)kern_addr; ctx->layout.base = user_addr; - log_debug("kbase: 0x%lx, base: 0x%lx\n", kern_addr, user_addr); return 0; } @@ -431,11 +430,11 @@ static int write_patch_to_user(const struct patch_context *ctx) { const struct patch_layout *layout = &ctx->layout; - log_debug("write patch image, src=0x%lx, dst=0x%lx, len=0x%x\n", - (unsigned long)layout->kbase, layout->base, layout->size); + log_debug("write patch image, dst=0x%lx, len=0x%x\n", + layout->base, layout->size); if (copy_to_user((void *)layout->base, layout->kbase, layout->size)) { - log_err("failed to write patch image, src=0x%lx, dst=0x%lx, len=0x%x\n", - (unsigned long)layout->kbase, layout->base, layout->size); + log_err("failed to write patch image, dst=0x%lx, len=0x%x\n", + layout->base, layout->size); return -EFAULT; } -- Gitee