Linux s390 Architecture development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "David Hildenbrand (Arm)" <david@kernel.org>
Cc: "Alexander Gordeev" <agordeev@linux.ibm.com>,
	linux-s390@vger.kernel.org, "Heiko Carstens" <hca@linux.ibm.com>,
	"Vasily Gorbik" <gor@linux.ibm.com>
Subject: Re: [PATCH 01/10] x86/mm: drop order parameter from free_pagetable()
Date: Wed, 08 Jul 2026 14:22:22 +0000	[thread overview]
Message-ID: <20260708142222.8DA691F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260708-bootmem_info_part2-v1-1-156ce4986598@kernel.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Page table pages are freed to the buddy allocator before their parent entries are cleared, creating a use-after-free window for hardware MMU walkers.
--

--- Patch [1]: [PATCH 01/10] x86/mm: drop order parameter from free_pagetable() ---
commit 9c29ffca799af465974343eaff811f5b52635f1f
Author: David Hildenbrand (Arm) <david@kernel.org>

x86/mm: drop order parameter from free_pagetable()

All callers pass 0, so let's drop the parameter.

> diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
> index d57f29ca23a5a..69e36f02a663a 100644
> --- a/arch/x86/mm/init_64.c
> +++ b/arch/x86/mm/init_64.c

[ ... ]

> @@ -1060,7 +1057,7 @@ static void __meminit free_pte_table(pte_t *pte_start, pmd_t *pmd)
>  	}
>  
>  	/* free a pte table */
> -	free_pagetable(pmd_page(*pmd), 0);
> +	free_pagetable(pmd_page(*pmd));
>  	spin_lock(&init_mm.page_table_lock);
>  	pmd_clear(pmd);

[Severity: High]
This is a pre-existing issue, but does calling free_pagetable() before
pmd_clear() create a use-after-free window?

The PTE table page is freed to the allocator before the PMD entry pointing to
it is cleared. If the freed page is quickly reallocated and populated with
arbitrary data, could hardware speculative page table walks or lockless software
walkers (like ptdump) follow the still-valid PMD entry and interpret this
data as valid page table entries?

>  	spin_unlock(&init_mm.page_table_lock);

[ ... ]

> @@ -1078,7 +1075,7 @@ static void __meminit free_pmd_table(pmd_t *pmd_start, pud_t *pud)
>  	}
>  
>  	/* free a pmd table */
> -	free_pagetable(pud_page(*pud), 0);
> +	free_pagetable(pud_page(*pud));
>  	spin_lock(&init_mm.page_table_lock);
>  	pud_clear(pud);

[Severity: High]
This is a pre-existing issue, but does this create a similar use-after-free
window for the PMD table page?

The PMD table page is freed to the buddy allocator before the PUD entry
pointing to it is cleared here.

>  	spin_unlock(&init_mm.page_table_lock);

[ ... ]

> @@ -1096,7 +1093,7 @@ static void __meminit free_pud_table(pud_t *pud_start, p4d_t *p4d)
>  	}
>  
>  	/* free a pud table */
> -	free_pagetable(p4d_page(*p4d), 0);
> +	free_pagetable(p4d_page(*p4d));
>  	spin_lock(&init_mm.page_table_lock);
>  	p4d_clear(p4d);

[Severity: High]
This is a pre-existing issue, but does this create a similar use-after-free
window for the PUD table page?

The PUD table page is freed to the buddy allocator before the P4D entry
pointing to it is cleared here.

>  	spin_unlock(&init_mm.page_table_lock);

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260708-bootmem_info_part2-v1-0-156ce4986598@kernel.org?part=1

  reply	other threads:[~2026-07-08 14:22 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-08 14:10 [PATCH 00/10] mm: remove CONFIG_HAVE_BOOTMEM_INFO_NODE (Part 2) David Hildenbrand (Arm)
2026-07-08 14:10 ` [PATCH 01/10] x86/mm: drop order parameter from free_pagetable() David Hildenbrand (Arm)
2026-07-08 14:22   ` sashiko-bot [this message]
2026-07-08 15:15   ` David Hildenbrand (Arm)
2026-07-09  2:32   ` Muchun Song
2026-07-08 14:10 ` [PATCH 02/10] mm: provide free_reserved_pages(), removing x86 variant David Hildenbrand (Arm)
2026-07-08 15:13   ` David Hildenbrand (Arm)
2026-07-09  6:19   ` Muchun Song
2026-07-08 14:10 ` [PATCH 03/10] s390/mm: use free_reserved_pages() in vmem_free_pages() David Hildenbrand (Arm)
2026-07-09  6:12   ` Heiko Carstens
2026-07-09  6:21   ` Muchun Song
2026-07-08 14:10 ` [PATCH 04/10] mm/bootmem_info: allow calling free_bootmem_page() on pages without a bootmem_type David Hildenbrand (Arm)
2026-07-08 14:53   ` sashiko-bot
2026-07-09  6:23   ` Muchun Song
2026-07-08 14:11 ` [PATCH 05/10] x86/mm: stop marking vmemmap as SECTION_INFO David Hildenbrand (Arm)
2026-07-08 15:10   ` sashiko-bot
2026-07-08 15:20   ` David Hildenbrand (Arm)
2026-07-08 14:11 ` [PATCH 06/10] x86/mm: stop marking page tables as MIX_SECTION_INFO David Hildenbrand (Arm)
2026-07-08 15:24   ` sashiko-bot
2026-07-08 15:27   ` David Hildenbrand (Arm)
2026-07-08 14:11 ` [PATCH 07/10] x86/mm: remove CONFIG_HAVE_BOOTMEM_INFO_NODE David Hildenbrand (Arm)
2026-07-08 15:38   ` sashiko-bot
2026-07-08 14:11 ` [PATCH 08/10] mm/hugetlb_vmemmap: remove bootmem_info leftovers David Hildenbrand (Arm)
2026-07-09  6:26   ` Muchun Song
2026-07-08 14:11 ` [PATCH 09/10] mm/sparse: remove bootmem_info.h include David Hildenbrand (Arm)
2026-07-09  6:26   ` Muchun Song
2026-07-08 14:11 ` [PATCH 10/10] mm/bootmem_info: remove CONFIG_HAVE_BOOTMEM_INFO_NODE David Hildenbrand (Arm)
2026-07-09  6:27   ` Muchun Song
2026-07-08 21:24 ` [PATCH 00/10] mm: remove CONFIG_HAVE_BOOTMEM_INFO_NODE (Part 2) Andrew Morton
2026-07-09  9:36 ` Mike Rapoport

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=20260708142222.8DA691F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=agordeev@linux.ibm.com \
    --cc=david@kernel.org \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=linux-s390@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox