From nobody Fri Apr 17 00:19:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2FE1E3ACA51 for ; Tue, 24 Feb 2026 17:58:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955890; cv=none; b=GzK2PwTbHN0NzWk03dUr6aw8Nzr26bpgP0HybTFSsYDRzSIKwnQIrfNGu4XkjJls1Ed2rFGUAvLc08m/+L+uc5fBUtV0Zjd+l+sISkvlqNKlH/Y1MrieJOmhG8Xkmzo9zJwFSDxdpRKwGGtJMiNRRJ2185+TlxY1mYafbUKxUNw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955890; c=relaxed/simple; bh=cZl55kWY2wW3/Tb//EZVX6W8rY+6ffheLjxa4vdvi98=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Fu1BykLT5LAJDAt/bQT/SWsIwNviB/oWEx1LuFkuwLaMsAa/YfzFmam68KZxAzSqp0dF5B2iLBIPxTt22GlykbnzeQGUDU9rD3cjp48+yMk1LcEn/sIzKlYQkEmVo1hhDnQLC1B8GpXpASJ4qCjqTLYYn9yruGWftZfyCft9yr4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7CCD0C116D0; Tue, 24 Feb 2026 17:58:06 +0000 (UTC) From: Catalin Marinas To: Andrew Morton , David Hildenbrand , Mark Brown , Deepak Gupta , Rick Edgecombe Cc: Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-mm@kvack.org Subject: [PATCH 1/5] mm: Introduce vm_mmap_shadow_stack() as a helper for VM_SHADOW_STACK mappings Date: Tue, 24 Feb 2026 17:57:53 +0000 Message-ID: <20260224175800.2500729-2-catalin.marinas@arm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260224175800.2500729-1-catalin.marinas@arm.com> References: <20260224175800.2500729-1-catalin.marinas@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" arm64, riscv and x86 use a similar pattern for mapping the user shadow stack (cloned from x86). Extract this into a helper to facilitate code reuse. The call to do_mmap() from the new helper uses PROT_READ|PROT_WRITE prot bits instead of the PROT_READ with an explicit VM_WRITE vm_flag. The x86 intent was to avoid PROT_WRITE implying normal write since the shadow stack is not writable by normal stores. However, from a kernel perspective, the vma is writeable. Functionally there is no difference. Signed-off-by: Catalin Marinas Cc: Andrew Morton Cc: David Hildenbrand Acked-by: David Hildenbrand (Arm) Reviewed-by: Mark Brown --- include/linux/mm.h | 4 ++++ mm/util.c | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 5be3d8a8f806..1f28be975f86 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3908,6 +3908,10 @@ extern int vm_munmap(unsigned long, size_t); extern unsigned long __must_check vm_mmap(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); +#ifdef CONFIG_ARCH_HAS_USER_SHADOW_STACK +extern unsigned long __must_check vm_mmap_shadow_stack(unsigned long addr, + unsigned long len, unsigned long flags); +#endif =20 struct vm_unmapped_area_info { #define VM_UNMAPPED_AREA_TOPDOWN 1 diff --git a/mm/util.c b/mm/util.c index b05ab6f97e11..2592291948f0 100644 --- a/mm/util.c +++ b/mm/util.c @@ -618,6 +618,31 @@ unsigned long vm_mmap(struct file *file, unsigned long= addr, } EXPORT_SYMBOL(vm_mmap); =20 +#ifdef CONFIG_ARCH_HAS_USER_SHADOW_STACK +/* + * Perform a userland memory mapping for a shadow stack into the current + * process address space. This is intended to be used by architectures that + * support user shadow stacks. + */ +unsigned long vm_mmap_shadow_stack(unsigned long addr, unsigned long len, + unsigned long flags) +{ + struct mm_struct *mm =3D current->mm; + unsigned long ret, unused; + + flags |=3D MAP_ANONYMOUS | MAP_PRIVATE; + if (addr) + flags |=3D MAP_FIXED_NOREPLACE; + + mmap_write_lock(mm); + ret =3D do_mmap(NULL, addr, len, PROT_READ | PROT_WRITE, flags, + VM_SHADOW_STACK, 0, &unused, NULL); + mmap_write_unlock(mm); + + return ret; +} +#endif /* CONFIG_ARCH_HAS_USER_SHADOW_STACK */ + /** * __vmalloc_array - allocate memory for a virtually contiguous array. * @n: number of elements. From nobody Fri Apr 17 00:19:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4CE23ACA78 for ; Tue, 24 Feb 2026 17:58:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955893; cv=none; b=FSCINZjT3Op0l4WaKAvVQappzPjPEluKyRGU74jtJ2I4YcIlGDAK37F0CbgH4DoVa2Mv9AfNN6yoevUGgbtYtq+vmmo8e62EAIddjawwdR7GY8puxVvGKqSReeCWwfRZbLPiWrQ8GyEOLtzQnVr+XDC97gTiO6yyup9pX3NNd/I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955893; c=relaxed/simple; bh=K1cr/WtPSVhZ2wsEO5q8Gc3ZHQDuDoT7nM4ANfwiMHs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZtwkNvufxJuvL4RU9mMsnl3CZko13p7myRIviTQ8dxpfuKuGK6N+O03rMoG5xexyOd/QKoBSGx7jbm97KSd0/005MwQ3RfYnDdr6AsSHhgYghj+VJlrFNxq/Kd8n7VTrcCP6TmqetGfyv52IHYXCGgycVV0pIKxjY1UBflQzeEo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 38832C19425; Tue, 24 Feb 2026 17:58:10 +0000 (UTC) From: Catalin Marinas To: Andrew Morton , David Hildenbrand , Mark Brown , Deepak Gupta , Rick Edgecombe Cc: Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-mm@kvack.org Subject: [PATCH 2/5] arm64: gcs: Use the new common vm_mmap_shadow_stack() helper Date: Tue, 24 Feb 2026 17:57:54 +0000 Message-ID: <20260224175800.2500729-3-catalin.marinas@arm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260224175800.2500729-1-catalin.marinas@arm.com> References: <20260224175800.2500729-1-catalin.marinas@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace the arm64 map_shadow_stack() content with a call to vm_mmap_shadow_stack(). Signed-off-by: Catalin Marinas Cc: Catalin Marinas Cc: Will Deacon Cc: Mark Brown Reviewed-by: David Hildenbrand (Arm) Reviewed-by: Mark Brown --- arch/arm64/mm/gcs.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/arch/arm64/mm/gcs.c b/arch/arm64/mm/gcs.c index 04a23a497f20..680749611a9a 100644 --- a/arch/arm64/mm/gcs.c +++ b/arch/arm64/mm/gcs.c @@ -12,19 +12,7 @@ =20 static unsigned long alloc_gcs(unsigned long addr, unsigned long size) { - int flags =3D MAP_ANONYMOUS | MAP_PRIVATE; - struct mm_struct *mm =3D current->mm; - unsigned long mapped_addr, unused; - - if (addr) - flags |=3D MAP_FIXED_NOREPLACE; - - mmap_write_lock(mm); - mapped_addr =3D do_mmap(NULL, addr, size, PROT_READ, flags, - VM_SHADOW_STACK | VM_WRITE, 0, &unused, NULL); - mmap_write_unlock(mm); - - return mapped_addr; + return vm_mmap_shadow_stack(addr, size, 0); } =20 static unsigned long gcs_size(unsigned long size) From nobody Fri Apr 17 00:19:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7F3C3AE6F0 for ; Tue, 24 Feb 2026 17:58:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955897; cv=none; b=MU/4rOr5NTJG7QpX9K9sXJoD9/tvDK0duQS8gCEL0OIoNXsDq8QM2TCZREOQOu6CMF/BgR4zNaQiPtQ7x0qb20RvH7uDQbszHzNfRU1zCYc8oot9x+2ltNirY1Pd+wWFV3XitDYGlTZOM2TwML/+bLhhDdRgKIuHVRZOS75V82I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955897; c=relaxed/simple; bh=mwUDeR1gppKAmBSz50GrSFFbVwP2z3ql7U6IusAaE4M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LCrTwmYOKd6U/k9xdv4/75DUN6naAZKPoziGsCE0FOgMFCYk93ECERtDx2Ts4BU+g3Qz2dQCVQQhghpIBXMX9JgmGPcsNxGnuXjD6DYnvdckYlrJo0IG+aMa4AEFu6YLv6AKzoWLrkmFxr2HkQSWcv7We/o+Vfo4i72zRI3SqNM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 04822C19422; Tue, 24 Feb 2026 17:58:13 +0000 (UTC) From: Catalin Marinas To: Andrew Morton , David Hildenbrand , Mark Brown , Deepak Gupta , Rick Edgecombe Cc: Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-mm@kvack.org Subject: [PATCH 3/5] riscv: shstk: Use the new common vm_mmap_shadow_stack() helper Date: Tue, 24 Feb 2026 17:57:55 +0000 Message-ID: <20260224175800.2500729-4-catalin.marinas@arm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260224175800.2500729-1-catalin.marinas@arm.com> References: <20260224175800.2500729-1-catalin.marinas@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace part of the allocate_shadow_stack() content with a call to vm_mmap_shadow_stack(). Signed-off-by: Catalin Marinas Cc: Paul Walmsley Cc: Palmer Dabbelt Cc: Albert Ou Cc: Alexandre Ghiti Cc: Deepak Gupta Reviewed-by: David Hildenbrand (Arm) --- arch/riscv/kernel/usercfi.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/arch/riscv/kernel/usercfi.c b/arch/riscv/kernel/usercfi.c index 1adba746f164..7e57f54dc5b2 100644 --- a/arch/riscv/kernel/usercfi.c +++ b/arch/riscv/kernel/usercfi.c @@ -230,17 +230,7 @@ int restore_user_shstk(struct task_struct *tsk, unsign= ed long shstk_ptr) static unsigned long allocate_shadow_stack(unsigned long addr, unsigned lo= ng size, unsigned long token_offset, bool set_tok) { - int flags =3D MAP_ANONYMOUS | MAP_PRIVATE; - struct mm_struct *mm =3D current->mm; - unsigned long populate; - - if (addr) - flags |=3D MAP_FIXED_NOREPLACE; - - mmap_write_lock(mm); - addr =3D do_mmap(NULL, addr, size, PROT_READ, flags, - VM_SHADOW_STACK | VM_WRITE, 0, &populate, NULL); - mmap_write_unlock(mm); + addr =3D vm_mmap_shadow_stack(addr, size, 0); =20 if (!set_tok || IS_ERR_VALUE(addr)) goto out; From nobody Fri Apr 17 00:19:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 71E953AA1AB for ; Tue, 24 Feb 2026 17:58:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955901; cv=none; b=dfLJgFbzP9mYVcLy8eA7I+H8nDw4XT89gP4WgtSb7PTx3yZnx/ZQVi2XC0ZRr4Mjte7dgjK5qd0dpjk1ceYk5Ow864Z7dDUaTAB+j3C/SGEflb4fyaQv3SsrPo0WScIkWym3zhUmQ9fqj/gTB8nDBciXoC237jvx+GgQaVkdB4I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955901; c=relaxed/simple; bh=dAm2OPoifvS5xLfJUU2Vl5rDLGiZYBrKPpgeDQLfAOY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mW/E0VocRzyivfSWqbsNBNb+PTjwOiW2mgNm6Xub1PnU3Nx2bcNfiJfd46fGkLf1fg8SMOw9/9usJ4lbF3T0MlXWIg/crpsc7hgq57yRJJJA/6cQqpTzZHnM7l8RsqBYd0ZJD6g13J9gstYrSupEjr2lxjL8NXlwNo3xWxL2nic= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id B619DC19423; Tue, 24 Feb 2026 17:58:17 +0000 (UTC) From: Catalin Marinas To: Andrew Morton , David Hildenbrand , Mark Brown , Deepak Gupta , Rick Edgecombe Cc: Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-mm@kvack.org Subject: [PATCH 4/5] x86: shstk: Use the new common vm_mmap_shadow_stack() helper Date: Tue, 24 Feb 2026 17:57:56 +0000 Message-ID: <20260224175800.2500729-5-catalin.marinas@arm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260224175800.2500729-1-catalin.marinas@arm.com> References: <20260224175800.2500729-1-catalin.marinas@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace part of the x86 alloc_shstk() content with a call to vm_mmap_shadow_stack(). Signed-off-by: Catalin Marinas Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: H. Peter Anvin Cc: Rick Edgecombe Reviewed-by: David Hildenbrand (Arm) Reviewed-by: Rick Edgecombe Tested-by: Rick Edgecombe --- arch/x86/kernel/shstk.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/arch/x86/kernel/shstk.c b/arch/x86/kernel/shstk.c index 978232b6d48d..9725e7d89b1e 100644 --- a/arch/x86/kernel/shstk.c +++ b/arch/x86/kernel/shstk.c @@ -100,17 +100,9 @@ static int create_rstor_token(unsigned long ssp, unsig= ned long *token_addr) static unsigned long alloc_shstk(unsigned long addr, unsigned long size, unsigned long token_offset, bool set_res_tok) { - int flags =3D MAP_ANONYMOUS | MAP_PRIVATE | MAP_ABOVE4G; - struct mm_struct *mm =3D current->mm; - unsigned long mapped_addr, unused; + unsigned long mapped_addr; =20 - if (addr) - flags |=3D MAP_FIXED_NOREPLACE; - - mmap_write_lock(mm); - mapped_addr =3D do_mmap(NULL, addr, size, PROT_READ, flags, - VM_SHADOW_STACK | VM_WRITE, 0, &unused, NULL); - mmap_write_unlock(mm); + mapped_addr =3D vm_mmap_shadow_stack(addr, size, MAP_ABOVE4G); =20 if (!set_res_tok || IS_ERR_VALUE(mapped_addr)) goto out; From nobody Fri Apr 17 00:19:47 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E6803AEF46 for ; Tue, 24 Feb 2026 17:58:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955905; cv=none; b=SlccprRGNTEJxoqVHnkmB+yHgTXQEO67P3pHHGQIPSaI89GTYORboDfJvV8HYH5aSU94YjR62Z9K5z9HgQ3QDbJFQfVd6GaetQ9I1XHDV3F3KBMn/Y0zYwCKXyZitOc6lPnGes7OMeVukfVaKaYASdQMLrJN5qUJIe+m+mWIqRU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771955905; c=relaxed/simple; bh=BGReaenuNZx1hxn7v1rHmFtusUD17uirEydH75vwn9Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lpv5k7hKu30/ZsJ4zHYjBsH4Uc4UPOT9YbZ0rpQwvOjbTdsIzoKuxH6qwFZ1kg7BZh6gJbT+E0BZYBdXrQojLt1qMXvRkfgt5HA3BpgxqI7qrQ//YPjPRx4LKkAEon3oTjR5Sb6rzqY2VqAUpO0+KAI07Wn+UZIkqL2UPjXG9RE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 70AC5C19425; Tue, 24 Feb 2026 17:58:21 +0000 (UTC) From: Catalin Marinas To: Andrew Morton , David Hildenbrand , Mark Brown , Deepak Gupta , Rick Edgecombe Cc: Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, linux-mm@kvack.org Subject: [PATCH 5/5] mm: Do not map the shadow stack as THP Date: Tue, 24 Feb 2026 17:57:57 +0000 Message-ID: <20260224175800.2500729-6-catalin.marinas@arm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260224175800.2500729-1-catalin.marinas@arm.com> References: <20260224175800.2500729-1-catalin.marinas@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The default shadow stack size allocated on first prctl() for the main thread or subsequently on clone() is either half of RLIMIT_STACK or half of a thread's stack size (for arm64). Both of these are likely to be suitable for a THP allocation and the kernel is more aggressive in creating such mappings. However, it does not make much sense to use a huge page. It didn't make sense for the normal stacks either, see commit c4608d1bf7c6 ("mm: mmap: map MAP_STACK to VM_NOHUGEPAGE"). Force VM_NOHUGEPAGE when allocating/mapping the shadow stack. As per commit 7190b3c8bd2b ("mm: mmap: map MAP_STACK to VM_NOHUGEPAGE only if THP is enabled"), only pass this flag if TRANSPARENT_HUGEPAGE is enabled as not to confuse CRIU tools. Signed-off-by: Catalin Marinas Cc: Andrew Morton Cc: David Hildenbrand Acked-by: David Hildenbrand (Arm) Reviewed-by: Mark Brown --- mm/util.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mm/util.c b/mm/util.c index 2592291948f0..9f33c6de6082 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 =3D current->mm; unsigned long ret, unused; + vm_flags_t vm_flags =3D VM_SHADOW_STACK; =20 flags |=3D MAP_ANONYMOUS | MAP_PRIVATE; if (addr) flags |=3D MAP_FIXED_NOREPLACE; =20 + if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) + vm_flags |=3D VM_NOHUGEPAGE; + mmap_write_lock(mm); ret =3D 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); =20 return ret;