[PATCH 05/12] powerpc: add pte_free_defer() for pgtables sharing page
Matthew Wilcox
willy at infradead.org
Mon May 29 07:02:02 PDT 2023
On Sun, May 28, 2023 at 11:20:21PM -0700, Hugh Dickins wrote:
> +void pte_free_defer(struct mm_struct *mm, pgtable_t pgtable)
> +{
> + struct page *page;
> +
> + page = virt_to_page(pgtable);
> + call_rcu(&page->rcu_head, pte_free_now);
> +}
This can't be safe (on ppc). IIRC you might have up to 16x4k page
tables sharing one 64kB page. So if you have two page tables from the
same page being defer-freed simultaneously, you'll reuse the rcu_head
and I cannot imagine things go well from that point.
I have no idea how to solve this problem.
More information about the linux-arm-kernel
mailing list