From e77909fde5dfcf771f9678ac5b5eea108a92a4a5 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 4 Jul 2023 08:36:03 +0100 Subject: [PATCH] 6.4-stable patches added patches: gup-avoid-stack-expansion-warning-for-known-good-case.patch --- ...xpansion-warning-for-known-good-case.patch | 45 +++++++++++++++++++ queue-6.4/series | 1 + 2 files changed, 46 insertions(+) create mode 100644 queue-6.4/gup-avoid-stack-expansion-warning-for-known-good-case.patch diff --git a/queue-6.4/gup-avoid-stack-expansion-warning-for-known-good-case.patch b/queue-6.4/gup-avoid-stack-expansion-warning-for-known-good-case.patch new file mode 100644 index 00000000000..4dcb38a310e --- /dev/null +++ b/queue-6.4/gup-avoid-stack-expansion-warning-for-known-good-case.patch @@ -0,0 +1,45 @@ +From eee9c708cc89b4600c6e6cdda5bc2b8b4dad96cb Mon Sep 17 00:00:00 2001 +From: Linus Torvalds +Date: Thu, 29 Jun 2023 12:36:47 -0700 +Subject: gup: avoid stack expansion warning for known-good case + +From: Linus Torvalds + +commit eee9c708cc89b4600c6e6cdda5bc2b8b4dad96cb upstream. + +In commit a425ac5365f6 ("gup: add warning if some caller would seem to +want stack expansion") I added a temporary warning to catch any strange +GUP users that would be impacted by the fact that GUP no longer extends +the stack. + +But it turns out that the warning is most easily triggered through +__access_remote_vm(), that already knows to expand the stack - it just +does it *after* calling GUP. So the warning is easy to trigger by just +running gdb (or similar) and accessing things remotely under the stack. + +This just adds a temporary extra "expand stack early" to avoid the +warning for the already converted case - not because the warning is bad, +but because getting the warning for this known good case would then hide +any subsequent warnings for any actually interesting cases. + +Let's try to remember to revert this change when we remove the warnings. + +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman +--- + mm/memory.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -5721,6 +5721,10 @@ int __access_remote_vm(struct mm_struct + return 0; + } + ++ /* Avoid triggering the temporary warning in __get_user_pages */ ++ if (!vma_lookup(mm, addr) && !expand_stack(mm, addr)) ++ return 0; ++ + /* ignore errors, just check how much was successfully transferred */ + while (len) { + int bytes, ret, offset; diff --git a/queue-6.4/series b/queue-6.4/series index 36a2e61daaa..042c966140b 100644 --- a/queue-6.4/series +++ b/queue-6.4/series @@ -12,3 +12,4 @@ docs-set-minimal-gtags-gnu-global-version-to-6.6.5.patch dm-ioctl-avoid-double-fetch-of-version.patch drm-amdgpu-validate-vm-ioctl-flags.patch arch-arm64-mm-fault-fix-undeclared-variable-error-in-do_page_fault.patch +gup-avoid-stack-expansion-warning-for-known-good-case.patch -- 2.47.3