]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 24 Sep 2022 08:49:13 +0000 (10:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 24 Sep 2022 08:49:13 +0000 (10:49 +0200)
added patches:
mm-slub-fix-to-return-errno-if-kmalloc-fails.patch
riscv-fix-a-nasty-sigreturn-bug.patch

queue-5.4/mm-slub-fix-to-return-errno-if-kmalloc-fails.patch [new file with mode: 0644]
queue-5.4/riscv-fix-a-nasty-sigreturn-bug.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/mm-slub-fix-to-return-errno-if-kmalloc-fails.patch b/queue-5.4/mm-slub-fix-to-return-errno-if-kmalloc-fails.patch
new file mode 100644 (file)
index 0000000..35311a5
--- /dev/null
@@ -0,0 +1,70 @@
+From 7e9c323c52b379d261a72dc7bd38120a761a93cd Mon Sep 17 00:00:00 2001
+From: Chao Yu <chao.yu@oppo.com>
+Date: Wed, 31 Aug 2022 22:54:54 +0800
+Subject: mm/slub: fix to return errno if kmalloc() fails
+
+From: Chao Yu <chao.yu@oppo.com>
+
+commit 7e9c323c52b379d261a72dc7bd38120a761a93cd upstream.
+
+In create_unique_id(), kmalloc(, GFP_KERNEL) can fail due to
+out-of-memory, if it fails, return errno correctly rather than
+triggering panic via BUG_ON();
+
+kernel BUG at mm/slub.c:5893!
+Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
+
+Call trace:
+ sysfs_slab_add+0x258/0x260 mm/slub.c:5973
+ __kmem_cache_create+0x60/0x118 mm/slub.c:4899
+ create_cache mm/slab_common.c:229 [inline]
+ kmem_cache_create_usercopy+0x19c/0x31c mm/slab_common.c:335
+ kmem_cache_create+0x1c/0x28 mm/slab_common.c:390
+ f2fs_kmem_cache_create fs/f2fs/f2fs.h:2766 [inline]
+ f2fs_init_xattr_caches+0x78/0xb4 fs/f2fs/xattr.c:808
+ f2fs_fill_super+0x1050/0x1e0c fs/f2fs/super.c:4149
+ mount_bdev+0x1b8/0x210 fs/super.c:1400
+ f2fs_mount+0x44/0x58 fs/f2fs/super.c:4512
+ legacy_get_tree+0x30/0x74 fs/fs_context.c:610
+ vfs_get_tree+0x40/0x140 fs/super.c:1530
+ do_new_mount+0x1dc/0x4e4 fs/namespace.c:3040
+ path_mount+0x358/0x914 fs/namespace.c:3370
+ do_mount fs/namespace.c:3383 [inline]
+ __do_sys_mount fs/namespace.c:3591 [inline]
+ __se_sys_mount fs/namespace.c:3568 [inline]
+ __arm64_sys_mount+0x2f8/0x408 fs/namespace.c:3568
+
+Cc: <stable@kernel.org>
+Fixes: 81819f0fc8285 ("SLUB core")
+Reported-by: syzbot+81684812ea68216e08c5@syzkaller.appspotmail.com
+Reviewed-by: Muchun Song <songmuchun@bytedance.com>
+Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
+Signed-off-by: Chao Yu <chao.yu@oppo.com>
+Acked-by: David Rientjes <rientjes@google.com>
+Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ mm/slub.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/mm/slub.c
++++ b/mm/slub.c
+@@ -5743,7 +5743,8 @@ static char *create_unique_id(struct kme
+       char *name = kmalloc(ID_STR_LENGTH, GFP_KERNEL);
+       char *p = name;
+-      BUG_ON(!name);
++      if (!name)
++              return ERR_PTR(-ENOMEM);
+       *p++ = ':';
+       /*
+@@ -5825,6 +5826,8 @@ static int sysfs_slab_add(struct kmem_ca
+                * for the symlinks.
+                */
+               name = create_unique_id(s);
++              if (IS_ERR(name))
++                      return PTR_ERR(name);
+       }
+       s->kobj.kset = kset;
diff --git a/queue-5.4/riscv-fix-a-nasty-sigreturn-bug.patch b/queue-5.4/riscv-fix-a-nasty-sigreturn-bug.patch
new file mode 100644 (file)
index 0000000..ed722fa
--- /dev/null
@@ -0,0 +1,40 @@
+From 762df359aa5849e010ef04c3ed79d57588ce17d9 Mon Sep 17 00:00:00 2001
+From: Al Viro <viro@zeniv.linux.org.uk>
+Date: Fri, 24 Sep 2021 01:55:27 +0000
+Subject: riscv: fix a nasty sigreturn bug...
+
+From: Al Viro <viro@zeniv.linux.org.uk>
+
+commit 762df359aa5849e010ef04c3ed79d57588ce17d9 upstream.
+
+riscv has an equivalent of arm bug fixed by 653d48b22166 ("arm: fix
+really nasty sigreturn bug"); if signal gets caught by an interrupt that
+hits when we have the right value in a0 (-513), *and* another signal
+gets delivered upon sigreturn() (e.g. included into the blocked mask for
+the first signal and posted while the handler had been running), the
+syscall restart logics will see regs->cause equal to EXC_SYSCALL (we are
+in a syscall, after all) and a0 already restored to its original value
+(-513, which happens to be -ERESTARTNOINTR) and assume that we need to
+apply the usual syscall restart logics.
+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Fixes: e2c0cdfba7f6 ("RISC-V: User-facing API")
+Cc: stable@vger.kernel.org
+Link: https://lore.kernel.org/r/YxJEiSq%2FCGaL6Gm9@ZenIV/
+Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/riscv/kernel/signal.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/riscv/kernel/signal.c
++++ b/arch/riscv/kernel/signal.c
+@@ -116,6 +116,8 @@ SYSCALL_DEFINE0(rt_sigreturn)
+       if (restore_altstack(&frame->uc.uc_stack))
+               goto badframe;
++      regs->cause = -1UL;
++
+       return regs->a0;
+ badframe:
index 8e478e65ed1ddea3d16d007eec6b833357d5b807..6b7eb1912f4441f2b892b07d04765492b90631fa 100644 (file)
@@ -66,3 +66,5 @@ alsa-hda-realtek-add-pincfg-for-asus-g533z-hp-jack.patch
 alsa-hda-realtek-add-quirk-for-asus-ga503r-laptop.patch
 alsa-hda-realtek-enable-4-speaker-output-dell-precision-5530-laptop.patch
 efi-libstub-check-shim-mode-using-moksbstatert.patch
+riscv-fix-a-nasty-sigreturn-bug.patch
+mm-slub-fix-to-return-errno-if-kmalloc-fails.patch