Hi Ran,

On Wed, Feb 11 2026, [email protected] wrote:

> From: Ran Xiaokai <[email protected]>
>
> kho_populate() returns without calling early_memunmap() on success
> path, this will cause early ioremap virtual address space leak.
>
> Fixes: b50634c5e84a ("kho: cleanup error handling in kho_populate()")
> Reviewed-by: Pratyush Yadav <[email protected]>
> Signed-off-by: Ran Xiaokai <[email protected]>
> ---
>  kernel/liveupdate/kexec_handover.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/liveupdate/kexec_handover.c 
> b/kernel/liveupdate/kexec_handover.c
> index fb3a7b67676e..3c705b08a489 100644
> --- a/kernel/liveupdate/kexec_handover.c
> +++ b/kernel/liveupdate/kexec_handover.c
> @@ -1463,13 +1463,14 @@ void __init kho_populate(phys_addr_t fdt_phys, u64 
> fdt_len,
>       struct kho_scratch *scratch = NULL;
>       phys_addr_t mem_map_phys;
>       void *fdt = NULL;
> +     bool populated = false;
>       int err;
>  
>       /* Validate the input FDT */
>       fdt = early_memremap(fdt_phys, fdt_len);
>       if (!fdt) {
>               pr_warn("setup: failed to memremap FDT (0x%llx)\n", fdt_phys);
> -             goto err_report;
> +             goto report;
>       }
>       err = fdt_check_header(fdt);
>       if (err) {
> @@ -1529,16 +1530,17 @@ void __init kho_populate(phys_addr_t fdt_phys, u64 
> fdt_len,
>       kho_in.scratch_phys = scratch_phys;
>       kho_in.mem_map_phys = mem_map_phys;
>       kho_scratch_cnt = scratch_cnt;
> -     pr_info("found kexec handover data.\n");
>  
> -     return;
> +     populated = true;
> +     pr_info("found kexec handover data.\n");
>  
>  err_unmap_scratch:
>       early_memunmap(scratch, scratch_len);
>  err_unmap_fdt:
>       early_memunmap(fdt, fdt_len);

I meant to say all these labels should be renamed, not just err_report.
So "err_unmap_scratch" should be "unmap_scratch", and "err_unmap_fdt"
should be "unmap_fdt".

> -err_report:
> -     pr_warn("disabling KHO revival\n");
> +report:
> +     if (!populated)
> +             pr_warn("disabling KHO revival\n");
>  }
>  
>  /* Helper functions for kexec_file_load */

-- 
Regards,
Pratyush Yadav

Reply via email to