[PATCH v2 0/6] arch, mm/execmem: resolve confusion about set_direct_map_valid_noflush()

Andrew Morton akpm at linux-foundation.org
Thu Aug 27 22:39:47 PDT 2026


On Sun, 23 Aug 2026 14:46:11 +0300 "Mike Rapoport (Microsoft)" <rppt at kernel.org> wrote:

> Recent discussion about implementation of execmem's ROX caches on arm64

I'm assuming a "[1]" reference was intended here.

> revealed a confusion about how set_direct_map_valid_noflush()
> implemented on different architectures.
> 
> On arm64 it sets or clears the PTE_VALID bit marking a PTE as present or
> not present.
> 
> On other architectures it's a range version of
> set_direct_map_invalid_noflush() and set_direct_map_default_noflush()
> 
> Unlike arm64::set_direct_map_valid_noflush(),
> set_direct_map_default_noflush() not only marks PTE as present, but also
> sets its default protection mode.
> 
> Other than that, initial design of execmem ROX caches didn't rely on
> restoration of large mappings that's now available on x86, but
> completely removed the memory allocated for the ROX cache from the
> direct map to ensure that large mappings are not split. This precluded
> usage of VM_FLUSH_RESET_PERMS for the ROX cache allocations and required
> execmem to implement manipulation of the direct map alias.
> 
> Current implementation of ROX caches does not remove the direct map
> alias but simply calls set_memory_rox() that updates the permissions in
> both vmalloc address space and the direct map and relies on
> collapse_large_pages() in x86 CPA to keep large mappings.
> 
> This allow using VM_FLUSH_RESET_PERMS for execmem ROX cache allocations
> with small adjustments to set_direct_map APIs and vmalloc::reset_perms()
> behaviour: adding number of pages parameter to set_direct_map APIs and
> making resetting of the direct map permissions in vmalloc VMAP_HUGE
> friendly.
> 
> Implement these adjustments, make execmem always use
> VM_FLUSH_RESET_PERMS and revert set_direct_map_valid_noflush() changes.
> 
> [1] https://lore.kernel.org/all/20260611130144.1385343-4-abarnas@google.com

The patchset is perhaps a little green but I tossed it in there, thanks.

I hit a few rejects in arch/x86/mm/pat/set_memory.c, but minor stuff.

I trust you've seen Sashiko's incidental oh-btw comments.

	https://sashiko.dev/#/patchset/20260823-execmem-set-vm-perms-v0-2-v2-0-b013a37d84b3@kernel.org




More information about the linux-arm-kernel mailing list