diff --git a/drivers/md/md.c b/drivers/md/md.c index 99b60d37114c..40dea4c06457 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -9302,9 +9302,14 @@ static bool md_spares_need_change(struct mddev *mddev) { struct md_rdev *rdev; - rdev_for_each(rdev, mddev) - if (rdev_removeable(rdev) || rdev_addable(rdev)) + rcu_read_lock(); + rdev_for_each_rcu(rdev, mddev) { + if (rdev_removeable(rdev) || rdev_addable(rdev)) { + rcu_read_unlock(); return true; + } + } + rcu_read_unlock(); return false; }