Re: [PATCH v3 03/14] xen/grant-table: stop setting PG_private on pages for grant mapping
From: David Hildenbrand (Arm)
Date: Tue Sep 08 2026 - 12:38:07 EST
On 9/8/26 04:56, Zi Yan wrote:
> gnttab_alloc_pages() stores xen_page_foreign in page->private. On 32-bit, a
> pointer to an allocated xen_page_foreign is stored; on 64-bit,
> xen_page_foreign is stored inline. Checking page->private != NULL is enough
> to tell whether a xen_page_foreign needs to be freed on 32-bit and
> page->private is zeroed unconditionally on 64-bit.
>
> It prepares for a future commit that remove PG_private.
>
> No functional change intended.
>
> Assisted-by: Claude:claude-opus-4-8
> Assisted-by: Codex:gpt-5
> Signed-off-by: Zi Yan <ziy@xxxxxxxxxx>
> To: Juergen Gross <jgross@xxxxxxxx>
> To: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> ---
> drivers/xen/balloon.c | 5 +++++
> drivers/xen/grant-table.c | 11 +++++------
> 2 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> index e7f74ea7cd5eb..fdb18348cfdfe 100644
> --- a/drivers/xen/balloon.c
> +++ b/drivers/xen/balloon.c
> @@ -182,6 +182,11 @@ static struct page *balloon_retrieve(bool require_lowmem)
>
> __ClearPageOffline(page);
> dec_node_page_state(page, NR_BALLOON_PAGES);
> + /*
> + * clear page->private before giving it out, since it might be used to
> + * store xen_page_foreign info.
> + */
> + set_page_private(page, 0);
Who would have set it to != 0 in the first place?
e.g., gnttab_free_pages() resets it to 0 now before calling
xen_free_unpopulated_pages().
--
Cheers,
David