From: Sasha Levin Date: Tue, 20 Feb 2024 01:25:48 +0000 (-0500) Subject: Fixes for 4.19 X-Git-Tag: v4.19.307~79 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a6f13f94bdb8f868b2217b5f9c37a7f2913d4ded;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.19 Signed-off-by: Sasha Levin --- diff --git a/queue-4.19/revert-md-raid5-wait-for-md_sb_change_pending-in-rai.patch-30150 b/queue-4.19/revert-md-raid5-wait-for-md_sb_change_pending-in-rai.patch-30150 new file mode 100644 index 00000000000..ac4c984f3c1 --- /dev/null +++ b/queue-4.19/revert-md-raid5-wait-for-md_sb_change_pending-in-rai.patch-30150 @@ -0,0 +1,72 @@ +From a15058db27bdbfa458bd1e886eac683d5d1babfe Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 8 Nov 2023 10:22:16 -0800 +Subject: Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d" + +From: Junxiao Bi + +[ Upstream commit bed9e27baf52a09b7ba2a3714f1e24e17ced386d ] + +This reverts commit 5e2cf333b7bd5d3e62595a44d598a254c697cd74. + +That commit introduced the following race and can cause system hung. + + md_write_start: raid5d: + // mddev->in_sync == 1 + set "MD_SB_CHANGE_PENDING" + // running before md_write_start wakeup it + waiting "MD_SB_CHANGE_PENDING" cleared + >>>>>>>>> hung + wakeup mddev->thread + ... + waiting "MD_SB_CHANGE_PENDING" cleared + >>>> hung, raid5d should clear this flag + but get hung by same flag. + +The issue reverted commit fixing is fixed by last patch in a new way. + +Fixes: 5e2cf333b7bd ("md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d") +Cc: stable@vger.kernel.org # v5.19+ +Signed-off-by: Junxiao Bi +Reviewed-by: Yu Kuai +Signed-off-by: Song Liu +Link: https://lore.kernel.org/r/20231108182216.73611-2-junxiao.bi@oracle.com +Signed-off-by: Sasha Levin +--- + drivers/md/raid5.c | 12 ------------ + 1 file changed, 12 deletions(-) + +diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c +index b98abe927d06..e2fcc09a18cd 100644 +--- a/drivers/md/raid5.c ++++ b/drivers/md/raid5.c +@@ -44,7 +44,6 @@ + */ + + #include +-#include + #include + #include + #include +@@ -6330,18 +6329,7 @@ static void raid5d(struct md_thread *thread) + spin_unlock_irq(&conf->device_lock); + md_check_recovery(mddev); + spin_lock_irq(&conf->device_lock); +- +- /* +- * Waiting on MD_SB_CHANGE_PENDING below may deadlock +- * seeing md_check_recovery() is needed to clear +- * the flag when using mdmon. +- */ +- continue; + } +- +- wait_event_lock_irq(mddev->sb_wait, +- !test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags), +- conf->device_lock); + } + pr_debug("%d stripes handled\n", handled); + +-- +2.43.0 + diff --git a/queue-4.19/series b/queue-4.19/series index 6d1fa8769ee..89339f8802e 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -195,3 +195,4 @@ nfp-use-correct-macro-for-lengthselect-in-bar-config.patch irqchip-irq-brcmstb-l2-add-write-memory-barrier-before-exit.patch pmdomain-core-move-the-unused-cleanup-to-a-_sync-initcall.patch revert-md-raid5-wait-for-md_sb_change_pending-in-rai.patch +revert-md-raid5-wait-for-md_sb_change_pending-in-rai.patch-30150