Re: [PATCH v3 00/12] mm: make userland page table freeing RCU-safe
From: Andrew Morton
Date: Tue Sep 15 2026 - 22:04:38 EST
On Fri, 11 Sep 2026 20:36:47 +0100 "Lorenzo Stoakes (ARM)" <ljs@xxxxxxxxxx> wrote:
> The majority of architectures in the kernel defer page table freeing until
> an RCU grace period has elapsed, this series converts all remaining
> architectures to do so too and eliminates CONFIG_MMU_GATHER_RCU_TABLE_FREE
> altogether.
Thanks, I've updated mm.git's mm-unstable branch to this version.
> v3:
> * Added Kiryl's tag to series (thanks! :)
> * Corrected commit message, comment indentation in 11/12 as per Kiryl.
> * Corrected 12/12 documentation as per Kiryl.
Here's how v3 altered mm.git:
Documentation/mm/process_addrs.rst | 4 ++--
include/asm-generic/tlb.h | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
--- a/Documentation/mm/process_addrs.rst~b
+++ a/Documentation/mm/process_addrs.rst
@@ -541,8 +541,8 @@ We establish basic locking rules when in
after an RCU grace period has elapsed. However, any entry found must be
revalidated after the page table lock is taken (such as the
:c:func:`!pmd_same` recheck performed by :c:func:`!pte_offset_map_lock`)
- before it is acted upon. Changing an entry always requires the page table
- lock.
+ before it is acted upon. Changing an entry requires the page table
+ lock and one of the locks that excludes teardown (mmap or VMA lock).
* Reads from and writes to page table entries must be *appropriately*
atomic. See the section on atomicity below for details.
* Populating previously empty entries requires that the mmap or VMA locks are
--- a/include/asm-generic/tlb.h~b
+++ a/include/asm-generic/tlb.h
@@ -151,8 +151,8 @@
* Page directories (__p*_free_tlb()) are always freed via tlb_remove_table(),
* after an RCU grace period (see mm/mmu_gather.c).
*
- * This serialises against software page-table walkers, including architectures
- * which do not use IPIs for remote TLB invalidates.
+ * This serialises against software page-table walkers, including architectures
+ * which do not use IPIs for remote TLB invalidates.
*
* An architecture is expected to provide __tlb_remove_table() (see
* HAVE_ARCH_TLB_REMOVE_TABLE) or use the generic __tlb_remove_table(), which
_