]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 18 Oct 2024 08:16:10 +0000 (10:16 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 18 Oct 2024 08:16:10 +0000 (10:16 +0200)
added patches:
fat-fix-uninitialized-variable.patch
mm-swapfile-skip-hugetlb-pages-for-unuse_vma.patch

queue-5.15/fat-fix-uninitialized-variable.patch [new file with mode: 0644]
queue-5.15/mm-swapfile-skip-hugetlb-pages-for-unuse_vma.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/fat-fix-uninitialized-variable.patch b/queue-5.15/fat-fix-uninitialized-variable.patch
new file mode 100644 (file)
index 0000000..200620c
--- /dev/null
@@ -0,0 +1,36 @@
+From 963a7f4d3b90ee195b895ca06b95757fcba02d1a Mon Sep 17 00:00:00 2001
+From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
+Date: Fri, 4 Oct 2024 15:03:49 +0900
+Subject: fat: fix uninitialized variable
+
+From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
+
+commit 963a7f4d3b90ee195b895ca06b95757fcba02d1a upstream.
+
+syszbot produced this with a corrupted fs image.  In theory, however an IO
+error would trigger this also.
+
+This affects just an error report, so should not be a serious error.
+
+Link: https://lkml.kernel.org/r/87r08wjsnh.fsf@mail.parknet.co.jp
+Link: https://lkml.kernel.org/r/66ff2c95.050a0220.49194.03e9.GAE@google.com
+Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
+Reported-by: syzbot+ef0d7bc412553291aa86@syzkaller.appspotmail.com
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/fat/namei_vfat.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/fat/namei_vfat.c
++++ b/fs/fat/namei_vfat.c
+@@ -1020,7 +1020,7 @@ error_inode:
+       if (corrupt < 0) {
+               fat_fs_error(new_dir->i_sb,
+                            "%s: Filesystem corrupted (i_pos %lld)",
+-                           __func__, sinfo.i_pos);
++                           __func__, new_i_pos);
+       }
+       goto out;
+ }
diff --git a/queue-5.15/mm-swapfile-skip-hugetlb-pages-for-unuse_vma.patch b/queue-5.15/mm-swapfile-skip-hugetlb-pages-for-unuse_vma.patch
new file mode 100644 (file)
index 0000000..a311ecb
--- /dev/null
@@ -0,0 +1,46 @@
+From 7528c4fb1237512ee18049f852f014eba80bbe8d Mon Sep 17 00:00:00 2001
+From: Liu Shixin <liushixin2@huawei.com>
+Date: Tue, 15 Oct 2024 09:45:21 +0800
+Subject: mm/swapfile: skip HugeTLB pages for unuse_vma
+
+From: Liu Shixin <liushixin2@huawei.com>
+
+commit 7528c4fb1237512ee18049f852f014eba80bbe8d upstream.
+
+I got a bad pud error and lost a 1GB HugeTLB when calling swapoff.  The
+problem can be reproduced by the following steps:
+
+ 1. Allocate an anonymous 1GB HugeTLB and some other anonymous memory.
+ 2. Swapout the above anonymous memory.
+ 3. run swapoff and we will get a bad pud error in kernel message:
+
+  mm/pgtable-generic.c:42: bad pud 00000000743d215d(84000001400000e7)
+
+We can tell that pud_clear_bad is called by pud_none_or_clear_bad in
+unuse_pud_range() by ftrace.  And therefore the HugeTLB pages will never
+be freed because we lost it from page table.  We can skip HugeTLB pages
+for unuse_vma to fix it.
+
+Link: https://lkml.kernel.org/r/20241015014521.570237-1-liushixin2@huawei.com
+Fixes: 0fe6e20b9c4c ("hugetlb, rmap: add reverse mapping for hugepage")
+Signed-off-by: Liu Shixin <liushixin2@huawei.com>
+Acked-by: Muchun Song <muchun.song@linux.dev>
+Cc: Naoya Horiguchi <nao.horiguchi@gmail.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/swapfile.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/mm/swapfile.c
++++ b/mm/swapfile.c
+@@ -2125,7 +2125,7 @@ static int unuse_mm(struct mm_struct *mm
+       mmap_read_lock(mm);
+       for (vma = mm->mmap; vma; vma = vma->vm_next) {
+-              if (vma->anon_vma) {
++              if (vma->anon_vma && !is_vm_hugetlb_page(vma)) {
+                       ret = unuse_vma(vma, type, frontswap,
+                                       fs_pages_to_unuse);
+                       if (ret)
index 433ae272d81e4258ce538976347b6abd1d538c5e..6616871a7d85141d79f9e8deee9efa64cd620299 100644 (file)
@@ -26,3 +26,5 @@ arm64-probes-remove-broken-ldr-literal-uprobe-support.patch
 arm64-probes-fix-simulate_ldr-_literal.patch
 net-macb-avoid-20s-boot-delay-by-skipping-mdio-bus-registration-for-fixed-link-phy.patch
 irqchip-gic-v3-its-fix-vsync-referencing-an-unmapped-vpe-on-gic-v4.1.patch
+fat-fix-uninitialized-variable.patch
+mm-swapfile-skip-hugetlb-pages-for-unuse_vma.patch