Re: [PATCH v3 4/5] md/raid10: fix improper BUG_ON() in raise_barrier()

From: Guoqing Jiang
Date: Sun Sep 18 2022 - 07:38:06 EST




On 9/16/22 7:34 PM, Yu Kuai wrote:
From: Yu Kuai <yukuai3@xxxxxxxxxx>

'conf->barrier' is protected by 'conf->resync_lock', reading
'conf->barrier' without holding the lock is wrong.

Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx>
---
drivers/md/raid10.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index cf452c25e1e5..9a28abd19709 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -936,8 +936,8 @@ static void flush_pending_writes(struct r10conf *conf)
static void raise_barrier(struct r10conf *conf, int force)
{
- BUG_ON(force && !conf->barrier);
spin_lock_irq(&conf->resync_lock);
+ BUG_ON(force && !conf->barrier);
/* Wait until no block IO is waiting (unless 'force') */
wait_event_lock_irq(conf->wait_barrier, force || !conf->nr_waiting,

Acked-by: Guoqing Jiang <guoqing.jiang@xxxxxxxxx>

Thanks,
Guoqing