From: Pratyush Yadav <pratyush@kernel.org>
To: ranxiaokai627@163.com
Cc: graf@amazon.com, rppt@kernel.org, pasha.tatashin@soleen.com,
pratyush@kernel.org, akpm@linux-foundation.org,
kexec@lists.infradead.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, ran.xiaokai@zte.com.cn
Subject: Re: [PATCH v2 1/2] kho: fix missing early_memunmap() call in kho_populate()
Date: Wed, 11 Feb 2026 10:31:45 +0100 [thread overview]
Message-ID: <2vxzy0kzr5ha.fsf@kernel.org> (raw)
In-Reply-To: <20260211032937.208353-2-ranxiaokai627@163.com> (ranxiaokai's message of "Wed, 11 Feb 2026 03:29:36 +0000")
Hi Ran,
On Wed, Feb 11 2026, ranxiaokai627@163.com wrote:
> From: Ran Xiaokai <ran.xiaokai@zte.com.cn>
>
> 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 <pratyush@kernel.org>
> Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn>
> ---
> 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
next prev parent reply other threads:[~2026-02-11 9:31 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-11 3:29 [PATCH v2 0/2] two fixes in kho_populate() ranxiaokai627
2026-02-11 3:29 ` [PATCH v2 1/2] kho: fix missing early_memunmap() call " ranxiaokai627
2026-02-11 9:31 ` Pratyush Yadav [this message]
2026-02-12 2:36 ` ranxiaokai627
2026-02-11 3:29 ` [PATCH v2 2/2] kho: remove unnecessary WARN_ON(err) " ranxiaokai627
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2vxzy0kzr5ha.fsf@kernel.org \
--to=pratyush@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=graf@amazon.com \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pasha.tatashin@soleen.com \
--cc=ran.xiaokai@zte.com.cn \
--cc=ranxiaokai627@163.com \
--cc=rppt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.