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,
surenb@google.com, kexec@lists.infradead.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
ran.xiaokai@zte.com.cn
Subject: Re: [PATCH v2] kho: init alloc tags when restoring pages from reserved memory
Date: Wed, 14 Jan 2026 16:55:31 +0000 [thread overview]
Message-ID: <2vxztswoi16k.fsf@kernel.org> (raw)
In-Reply-To: <20260113033403.161869-1-ranxiaokai627@163.com> (ranxiaokai's message of "Tue, 13 Jan 2026 03:34:03 +0000")
Hi Ran,
On Tue, Jan 13 2026, ranxiaokai627@163.com wrote:
> From: Ran Xiaokai <ran.xiaokai@zte.com.cn>
>
> Memblock pages (including reserved memory) should have their allocation
> tags initialized to CODETAG_EMPTY via clear_page_tag_ref() before being
> released to the page allocator. When kho restores pages through
> kho_restore_page(), missing this call causes mismatched
> allocation/deallocation tracking and below warning message:
> alloc_tag was not set
> WARNING: include/linux/alloc_tag.h:164 at ___free_pages+0xb8/0x260, CPU#1: swapper/0/1
> RIP: 0010:___free_pages+0xb8/0x260
> kho_restore_vmalloc+0x187/0x2e0
> kho_test_init+0x3c4/0xa30
> do_one_initcall+0x62/0x2b0
> kernel_init_freeable+0x25b/0x480
> kernel_init+0x1a/0x1c0
> ret_from_fork+0x2d1/0x360
>
> Add missing clear_page_tag_ref() annotation in kho_restore_page() to
> fix this.
>
> Fixes: fc33e4b44b27 ("kexec: enable KHO support for memory preservation")
> Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn>
> Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> Reviewed-by: Suren Baghdasaryan <surenb@google.com>
> ---
> kernel/liveupdate/kexec_handover.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
> index cd6b3fb9dcae..2d47f2c50bd8 100644
> --- a/kernel/liveupdate/kexec_handover.c
> +++ b/kernel/liveupdate/kexec_handover.c
> @@ -268,6 +268,7 @@ static struct page *kho_restore_page(phys_addr_t phys, bool is_folio)
> else
> kho_init_pages(page, nr_pages);
>
> + clear_page_tag_ref(page);
You are only clearing the tag for the head page. The tail pages are
still un-initialized. Is that intentional?
What about non-compound pages (the ones you get from
kho_restore_pages(), aka when is_folio is false)? Do we need to clear
the tag on all pages in that case?
> adjust_managed_page_count(page, nr_pages);
> return page;
> }
next prev parent reply other threads:[~2026-01-14 16:55 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-13 3:34 [PATCH v2] kho: init alloc tags when restoring pages from reserved memory ranxiaokai627
2026-01-13 16:21 ` Pasha Tatashin
2026-01-14 16:55 ` Pratyush Yadav [this message]
2026-01-14 17:59 ` Suren Baghdasaryan
2026-01-14 18:42 ` Pratyush Yadav
2026-01-14 22:03 ` Suren Baghdasaryan
2026-01-16 11:26 ` Pratyush Yadav
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=2vxztswoi16k.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 \
--cc=surenb@google.com \
/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.