From: Greg Kroah-Hartman Date: Mon, 21 Oct 2019 19:52:07 +0000 (-0400) Subject: 4.19-stable patches X-Git-Tag: v4.4.198~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2ccda0dc355b2997a88510372694abccd6b4f264;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: ocfs2-fix-panic-due-to-ocfs2_wq-is-null.patch --- diff --git a/queue-4.19/ocfs2-fix-panic-due-to-ocfs2_wq-is-null.patch b/queue-4.19/ocfs2-fix-panic-due-to-ocfs2_wq-is-null.patch new file mode 100644 index 00000000000..e4893b72aae --- /dev/null +++ b/queue-4.19/ocfs2-fix-panic-due-to-ocfs2_wq-is-null.patch @@ -0,0 +1,78 @@ +From b918c43021baaa3648de09e19a4a3dd555a45f40 Mon Sep 17 00:00:00 2001 +From: Yi Li +Date: Fri, 18 Oct 2019 20:20:08 -0700 +Subject: ocfs2: fix panic due to ocfs2_wq is null + +From: Yi Li + +commit b918c43021baaa3648de09e19a4a3dd555a45f40 upstream. + +mount.ocfs2 failed when reading ocfs2 filesystem superblock encounters +an error. ocfs2_initialize_super() returns before allocating ocfs2_wq. +ocfs2_dismount_volume() triggers the following panic. + + Oct 15 16:09:27 cnwarekv-205120 kernel: On-disk corruption discovered.Please run fsck.ocfs2 once the filesystem is unmounted. + Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_read_locked_inode:537 ERROR: status = -30 + Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_init_global_system_inodes:458 ERROR: status = -30 + Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_init_global_system_inodes:491 ERROR: status = -30 + Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_initialize_super:2313 ERROR: status = -30 + Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_fill_super:1033 ERROR: status = -30 + ------------[ cut here ]------------ + Oops: 0002 [#1] SMP NOPTI + CPU: 1 PID: 11753 Comm: mount.ocfs2 Tainted: G E + 4.14.148-200.ckv.x86_64 #1 + Hardware name: Sugon H320-G30/35N16-US, BIOS 0SSDX017 12/21/2018 + task: ffff967af0520000 task.stack: ffffa5f05484000 + RIP: 0010:mutex_lock+0x19/0x20 + Call Trace: + flush_workqueue+0x81/0x460 + ocfs2_shutdown_local_alloc+0x47/0x440 [ocfs2] + ocfs2_dismount_volume+0x84/0x400 [ocfs2] + ocfs2_fill_super+0xa4/0x1270 [ocfs2] + ? ocfs2_initialize_super.isa.211+0xf20/0xf20 [ocfs2] + mount_bdev+0x17f/0x1c0 + mount_fs+0x3a/0x160 + +Link: http://lkml.kernel.org/r/1571139611-24107-1-git-send-email-yili@winhong.com +Signed-off-by: Yi Li +Reviewed-by: Joseph Qi +Cc: Mark Fasheh +Cc: Joel Becker +Cc: Junxiao Bi +Cc: Changwei Ge +Cc: Gang He +Cc: Jun Piao +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ocfs2/journal.c | 3 ++- + fs/ocfs2/localalloc.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +--- a/fs/ocfs2/journal.c ++++ b/fs/ocfs2/journal.c +@@ -231,7 +231,8 @@ void ocfs2_recovery_exit(struct ocfs2_su + /* At this point, we know that no more recovery threads can be + * launched, so wait for any recovery completion work to + * complete. */ +- flush_workqueue(osb->ocfs2_wq); ++ if (osb->ocfs2_wq) ++ flush_workqueue(osb->ocfs2_wq); + + /* + * Now that recovery is shut down, and the osb is about to be +--- a/fs/ocfs2/localalloc.c ++++ b/fs/ocfs2/localalloc.c +@@ -391,7 +391,8 @@ void ocfs2_shutdown_local_alloc(struct o + struct ocfs2_dinode *alloc = NULL; + + cancel_delayed_work(&osb->la_enable_wq); +- flush_workqueue(osb->ocfs2_wq); ++ if (osb->ocfs2_wq) ++ flush_workqueue(osb->ocfs2_wq); + + if (osb->local_alloc_state == OCFS2_LA_UNUSED) + goto out; diff --git a/queue-4.19/series b/queue-4.19/series index bac25ae1cc9..a784511b477 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -18,3 +18,4 @@ net-hisilicon-fix-usage-of-uninitialized-variable-in.patch lib-textsearch-fix-escapes-in-example-code.patch r8152-set-macpassthru-in-reset_resume-callback.patch namespace-fix-namespace.pl-script-to-support-relativ.patch +ocfs2-fix-panic-due-to-ocfs2_wq-is-null.patch