[PATCH v2 02/12] x86: pgtable: Always use pte_free_kernel()
Matthew Wilcox
willy at infradead.org
Tue Apr 8 09:37:27 PDT 2025
On Tue, Apr 08, 2025 at 08:22:47AM -0700, Dave Hansen wrote:
> Are there any tests for folio_test_pgtable() at free_page() time? If we
> had that, it would make it less likely that another free_page() user
> could sneak in without calling the destructor.
It's hidden, but yes:
static inline bool page_expected_state(struct page *page,
unsigned long check_flags)
{
if (unlikely(atomic_read(&page->_mapcount) != -1))
return false;
PageTable uses page_type which aliases with mapcount, so this check
covers "PageTable is still set when the last refcount to it is put".
I don't think we really use the page refcount when allocating/freeing
page tables. Anyone want to try switching it over to using
alloc_frozen_pages() / free_frozen_pages()? Might need to move that API
out of mm/internal.h ...
More information about the linux-riscv
mailing list