]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Jul 2025 09:54:35 +0000 (11:54 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Jul 2025 09:54:35 +0000 (11:54 +0200)
added patches:
mm-vmalloc-leave-lazy-mmu-mode-on-pte-mapping-error.patch

queue-5.10/mm-vmalloc-leave-lazy-mmu-mode-on-pte-mapping-error.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/mm-vmalloc-leave-lazy-mmu-mode-on-pte-mapping-error.patch b/queue-5.10/mm-vmalloc-leave-lazy-mmu-mode-on-pte-mapping-error.patch
new file mode 100644 (file)
index 0000000..608f157
--- /dev/null
@@ -0,0 +1,62 @@
+From fea18c686320a53fce7ad62a87a3e1d10ad02f31 Mon Sep 17 00:00:00 2001
+From: Alexander Gordeev <agordeev@linux.ibm.com>
+Date: Mon, 23 Jun 2025 09:57:21 +0200
+Subject: mm/vmalloc: leave lazy MMU mode on PTE mapping error
+
+From: Alexander Gordeev <agordeev@linux.ibm.com>
+
+commit fea18c686320a53fce7ad62a87a3e1d10ad02f31 upstream.
+
+vmap_pages_pte_range() enters the lazy MMU mode, but fails to leave it in
+case an error is encountered.
+
+Link: https://lkml.kernel.org/r/20250623075721.2817094-1-agordeev@linux.ibm.com
+Fixes: 2ba3e6947aed ("mm/vmalloc: track which page-table levels were modified")
+Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
+Reported-by: kernel test robot <lkp@intel.com>
+Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
+Closes: https://lore.kernel.org/r/202506132017.T1l1l6ME-lkp@intel.com/
+Reviewed-by: Ryan Roberts <ryan.roberts@arm.com>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ mm/vmalloc.c |   16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+--- a/mm/vmalloc.c
++++ b/mm/vmalloc.c
+@@ -193,6 +193,7 @@ static int vmap_pte_range(pmd_t *pmd, un
+               unsigned long end, pgprot_t prot, struct page **pages, int *nr,
+               pgtbl_mod_mask *mask)
+ {
++      int err = 0;
+       pte_t *pte;
+       /*
+@@ -206,15 +207,20 @@ static int vmap_pte_range(pmd_t *pmd, un
+       do {
+               struct page *page = pages[*nr];
+-              if (WARN_ON(!pte_none(*pte)))
+-                      return -EBUSY;
+-              if (WARN_ON(!page))
+-                      return -ENOMEM;
++              if (WARN_ON(!pte_none(*pte))) {
++                      err = -EBUSY;
++                      break;
++              }
++              if (WARN_ON(!page)) {
++                      err = -ENOMEM;
++                      break;
++              }
+               set_pte_at(&init_mm, addr, pte, mk_pte(page, prot));
+               (*nr)++;
+       } while (pte++, addr += PAGE_SIZE, addr != end);
+       *mask |= PGTBL_PTE_MODIFIED;
+-      return 0;
++
++      return err;
+ }
+ static int vmap_pmd_range(pud_t *pud, unsigned long addr,
index 98629768e2ec59c12aeeffd8edc02253add20401..55efa18863bd69daf7f7c9e05d949e8b0acbef45 100644 (file)
@@ -49,3 +49,4 @@ usb-musb-add-and-use-inline-functions-musb_-get-set-_state.patch
 usb-musb-fix-gadget-state-on-disconnect.patch
 usb-dwc3-qcom-don-t-leave-bcr-asserted.patch
 asoc-fsl_sai-force-a-software-reset-when-starting-in-consumer-mode.patch
+mm-vmalloc-leave-lazy-mmu-mode-on-pte-mapping-error.patch