Re: [PATCH] mm: Remove PMD alignment constraint in execmem_vmalloc()
From: Dev Jain
Date: Mon Sep 22 2025 - 02:50:29 EST
On 22/09/25 11:32 am, Anshuman Khandual wrote:
On 18/09/25 3:04 PM, Dev Jain wrote:
When using vmalloc with VM_ALLOW_HUGE_VMAP flag, it will set the alignmentSo if the above assignment is getting dropped here, probably the local
to PMD_SIZE internally, if it deems huge mappings to be eligible.
Therefore, setting the alignment in execmem_vmalloc is redundant. Apart
from this, it also reduces the probability of allocation in case vmalloc
fails to allocate hugepages - in the fallback case, vmalloc tries to use
the original alignment and allocate basepages, which unfortunately will
again be PMD_SIZE passed over from execmem_vmalloc, thus constraining
the search for a free space in vmalloc region.
Therefore, remove this constraint.
Signed-off-by: Dev Jain <dev.jain@xxxxxxx>
---
mm-selftests pass, but I am not sure if they touch execmem code, and I
have no experience with this code.
mm/execmem.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/mm/execmem.c b/mm/execmem.c
index 0822305413ec..810a4ba9c924 100644
--- a/mm/execmem.c
+++ b/mm/execmem.c
@@ -38,9 +38,6 @@ static void *execmem_vmalloc(struct execmem_range *range, size_t size,
if (kasan)
vm_flags |= VM_DEFER_KMEMLEAK;
- if (vm_flags & VM_ALLOW_HUGE_VMAP)
- align = PMD_SIZE;
-
variable 'align' could be dropped as well and range->alignment be used
directly instead ?
Sure, but that isn't a big deal. Replacing with range->aligment will
push the arguments declaration into an extra line in __vmalloc_node_range.
So will prefer not respinning for this triviality, this has already
been pulled into mm-new :)
p = __vmalloc_node_range(size, align, start, end, gfp_flags,
pgprot, vm_flags, NUMA_NO_NODE,
__builtin_return_address(0));