Re: [PATCH] mm: Remove PMD alignment constraint in execmem_vmalloc()

From: Anshuman Khandual

Date: Mon Sep 22 2025 - 02:03:02 EST




On 18/09/25 3:04 PM, Dev Jain wrote:
> When using vmalloc with VM_ALLOW_HUGE_VMAP flag, it will set the alignment
> 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;
> -

So if the above assignment is getting dropped here, probably the local
variable 'align' could be dropped as well and range->alignment be used
directly instead ?
> p = __vmalloc_node_range(size, align, start, end, gfp_flags,
> pgprot, vm_flags, NUMA_NO_NODE,
> __builtin_return_address(0));