diff --git a/mm/util.c b/mm/util.c index 51f7f417e91f..419cb81ab353 100644 --- a/mm/util.c +++ b/mm/util.c @@ -629,14 +629,18 @@ unsigned long vm_mmap_shadow_stack(unsigned long addr, unsigned long len, { struct mm_struct *mm = current->mm; unsigned long ret, unused; + vm_flags_t vm_flags = VM_SHADOW_STACK; flags |= MAP_ANONYMOUS | MAP_PRIVATE; if (addr) flags |= MAP_FIXED_NOREPLACE; + if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) + vm_flags |= VM_NOHUGEPAGE; + mmap_write_lock(mm); ret = do_mmap(NULL, addr, len, PROT_READ | PROT_WRITE, flags, - VM_SHADOW_STACK, 0, &unused, NULL); + vm_flags, 0, &unused, NULL); mmap_write_unlock(mm); return ret;