From: Greg Kroah-Hartman Date: Tue, 22 Jul 2025 09:54:35 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v6.1.147~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1ec22e1921e211d7713c8b60f4ce72bd736e0a54;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: mm-vmalloc-leave-lazy-mmu-mode-on-pte-mapping-error.patch --- 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 index 0000000000..608f1571f4 --- /dev/null +++ b/queue-5.10/mm-vmalloc-leave-lazy-mmu-mode-on-pte-mapping-error.patch @@ -0,0 +1,62 @@ +From fea18c686320a53fce7ad62a87a3e1d10ad02f31 Mon Sep 17 00:00:00 2001 +From: Alexander Gordeev +Date: Mon, 23 Jun 2025 09:57:21 +0200 +Subject: mm/vmalloc: leave lazy MMU mode on PTE mapping error + +From: Alexander Gordeev + +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 +Reported-by: kernel test robot +Reported-by: Dan Carpenter +Closes: https://lore.kernel.org/r/202506132017.T1l1l6ME-lkp@intel.com/ +Reviewed-by: Ryan Roberts +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman +--- + 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, diff --git a/queue-5.10/series b/queue-5.10/series index 98629768e2..55efa18863 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -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