From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 08C4515800D for ; Tue, 4 Jul 2023 13:06:05 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 1CC2EE07EC; Tue, 4 Jul 2023 13:06:04 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id EACBAE07EC for ; Tue, 4 Jul 2023 13:06:03 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id D80AC335CD3 for ; Tue, 4 Jul 2023 13:06:02 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 1A185ABF for ; Tue, 4 Jul 2023 13:06:01 +0000 (UTC) From: "Mike Pagano" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Pagano" Message-ID: <1688475949.6dd30a46a4609e1a119a362fd999f5b1d9e25817.mpagano@gentoo> Subject: [gentoo-commits] proj/linux-patches:6.3 commit in: / X-VCS-Repository: proj/linux-patches X-VCS-Files: 0000_README 1800_mm-execve-mark-stack-as-growing-down.patch X-VCS-Directories: / X-VCS-Committer: mpagano X-VCS-Committer-Name: Mike Pagano X-VCS-Revision: 6dd30a46a4609e1a119a362fd999f5b1d9e25817 X-VCS-Branch: 6.3 Date: Tue, 4 Jul 2023 13:06:01 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 9bd15800-7257-46f3-9b76-f0dce7a82097 X-Archives-Hash: acad988bc4d5528266ba80dd85769f5c commit: 6dd30a46a4609e1a119a362fd999f5b1d9e25817 Author: Mike Pagano gentoo org> AuthorDate: Tue Jul 4 13:05:49 2023 +0000 Commit: Mike Pagano gentoo org> CommitDate: Tue Jul 4 13:05:49 2023 +0000 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=6dd30a46 mm: disable CONFIG_PER_VMA_LOCK by default until its fixed Signed-off-by: Mike Pagano gentoo.org> 0000_README | 4 ++ 1800_mm-execve-mark-stack-as-growing-down.patch | 82 +++++++++++++++++++++++++ 2 files changed, 86 insertions(+) diff --git a/0000_README b/0000_README index 80499d11..ac24f1fa 100644 --- a/0000_README +++ b/0000_README @@ -99,6 +99,10 @@ Patch: 1700_sparc-address-warray-bound-warnings.patch From: https://github.com/KSPP/linux/issues/109 Desc: Address -Warray-bounds warnings +Patch: 1800_mm-execve-mark-stack-as-growing-down.patch +From: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git +Desc: execve: always mark stack as growing down during early stack setup + Patch: 2000_BT-Check-key-sizes-only-if-Secure-Simple-Pairing-enabled.patch From: https://lore.kernel.org/linux-bluetooth/20190522070540.48895-1-marcel@holtmann.org/raw Desc: Bluetooth: Check key sizes only when Secure Simple Pairing is enabled. See bug #686758 diff --git a/1800_mm-execve-mark-stack-as-growing-down.patch b/1800_mm-execve-mark-stack-as-growing-down.patch new file mode 100644 index 00000000..f3da01d8 --- /dev/null +++ b/1800_mm-execve-mark-stack-as-growing-down.patch @@ -0,0 +1,82 @@ +From 53a70ffa22715ab23903ef9fa4f67a21ce10a759 Mon Sep 17 00:00:00 2001 +From: Linus Torvalds +Date: Sun, 2 Jul 2023 23:20:17 -0700 +Subject: execve: always mark stack as growing down during early stack setup + +commit f66066bc5136f25e36a2daff4896c768f18c211e upstream. + +While our user stacks can grow either down (all common architectures) or +up (parisc and the ia64 register stack), the initial stack setup when we +copy the argument and environment strings to the new stack at execve() +time is always done by extending the stack downwards. + +But it turns out that in commit 8d7071af8907 ("mm: always expand the +stack with the mmap write lock held"), as part of making the stack +growing code more robust, 'expand_downwards()' was now made to actually +check the vma flags: + + if (!(vma->vm_flags & VM_GROWSDOWN)) + return -EFAULT; + +and that meant that this execve-time stack expansion started failing on +parisc, because on that architecture, the stack flags do not contain the +VM_GROWSDOWN bit. + +At the same time the new check in expand_downwards() is clearly correct, +and simplified the callers, so let's not remove it. + +The solution is instead to just codify the fact that yes, during +execve(), the stack grows down. This not only matches reality, it ends +up being particularly simple: we already have special execve-time flags +for the stack (VM_STACK_INCOMPLETE_SETUP) and use those flags to avoid +page migration during this setup time (see vma_is_temporary_stack() and +invalid_migration_vma()). + +So just add VM_GROWSDOWN to that set of temporary flags, and now our +stack flags automatically match reality, and the parisc stack expansion +works again. + +Note that the VM_STACK_INCOMPLETE_SETUP bits will be cleared when the +stack is finalized, so we only add the extra VM_GROWSDOWN bit on +CONFIG_STACK_GROWSUP architectures (ie parisc) rather than adding it in +general. + +Link: https://lore.kernel.org/all/612eaa53-6904-6e16-67fc-394f4faa0e16@bell.net/ +Link: https://lore.kernel.org/all/5fd98a09-4792-1433-752d-029ae3545168@gmx.de/ +Fixes: 8d7071af8907 ("mm: always expand the stack with the mmap write lock held") +Reported-by: John David Anglin +Reported-and-tested-by: Helge Deller +Reported-and-tested-by: Guenter Roeck +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/mm.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/include/linux/mm.h b/include/linux/mm.h +index 53bec6d4297bb..e9cf8dcd4b83d 100644 +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -384,7 +384,7 @@ extern unsigned int kobjsize(const void *objp); + #endif /* CONFIG_HAVE_ARCH_USERFAULTFD_MINOR */ + + /* Bits set in the VMA until the stack is in its final location */ +-#define VM_STACK_INCOMPLETE_SETUP (VM_RAND_READ | VM_SEQ_READ) ++#define VM_STACK_INCOMPLETE_SETUP (VM_RAND_READ | VM_SEQ_READ | VM_STACK_EARLY) + + #define TASK_EXEC ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) + +@@ -406,8 +406,10 @@ extern unsigned int kobjsize(const void *objp); + + #ifdef CONFIG_STACK_GROWSUP + #define VM_STACK VM_GROWSUP ++#define VM_STACK_EARLY VM_GROWSDOWN + #else + #define VM_STACK VM_GROWSDOWN ++#define VM_STACK_EARLY 0 + #endif + + #define VM_STACK_FLAGS (VM_STACK | VM_STACK_DEFAULT_FLAGS | VM_ACCOUNT) +-- +cgit +