On Mon, Sep 21, 2026 at 05:04:41PM +0800, Jinjie Ruan wrote:
> If load_other_segments() fails after image->elf_headers is assigned,
> the memory lifecycle is safely managed by the global kimage object
> and will be freed in arch_kimage_file_post_load_cleanup().
> 
> However, during a retry loop in image_load(), a subsequent iteration
> will allocate a new buffer and overwrite image->elf_headers. This
> permanently leaks the stale memory from the previous iteration before
> the global cleanup can track it.
> 
> Fix this by explicitly freeing the stale `image->elf_headers` buffer
> before assigning the newly allocated headers.
> 
> Cc: Catalin Marinas <[email protected]>
> Cc: Will Deacon <[email protected]>
> Cc: Thomas Huth <[email protected]>
> Cc: Breno Leitao <[email protected]>
> Cc: Andrew Morton <[email protected]>
> Cc: Yeoreum Yun <[email protected]>
> Cc: Baoquan He <[email protected]>
> Cc: [email protected]
> Fixes: 108aa503657e ("arm64: kexec_file: try more regions if loading segments 
> fails")
> Signed-off-by: Jinjie Ruan <[email protected]>
> ---
>  arch/arm64/kernel/machine_kexec_file.c | 4 ++++
>  1 file changed, 4 insertions(+)

Acked-by: Catalin Marinas <[email protected]>

Reply via email to