return true;
        if (bio_data_dir(bio) != WRITE)
                return false;
-       if (mddev->suspend_lo >= mddev->suspend_hi)
+       if (READ_ONCE(mddev->suspend_lo) >= READ_ONCE(mddev->suspend_hi))
                return false;
-       if (bio->bi_iter.bi_sector >= mddev->suspend_hi)
+       if (bio->bi_iter.bi_sector >= READ_ONCE(mddev->suspend_hi))
                return false;
-       if (bio_end_sector(bio) < mddev->suspend_lo)
+       if (bio_end_sector(bio) < READ_ONCE(mddev->suspend_lo))
                return false;
        return true;
 }
 static ssize_t
 suspend_lo_show(struct mddev *mddev, char *page)
 {
-       return sprintf(page, "%llu\n", (unsigned long long)mddev->suspend_lo);
+       return sprintf(page, "%llu\n",
+                      (unsigned long long)READ_ONCE(mddev->suspend_lo));
 }
 
 static ssize_t
                return err;
 
        mddev_suspend(mddev);
-       mddev->suspend_lo = new;
+       WRITE_ONCE(mddev->suspend_lo, new);
        mddev_resume(mddev);
 
        mddev_unlock(mddev);
 static ssize_t
 suspend_hi_show(struct mddev *mddev, char *page)
 {
-       return sprintf(page, "%llu\n", (unsigned long long)mddev->suspend_hi);
+       return sprintf(page, "%llu\n",
+                      (unsigned long long)READ_ONCE(mddev->suspend_hi));
 }
 
 static ssize_t
                return err;
 
        mddev_suspend(mddev);
-       mddev->suspend_hi = new;
+       WRITE_ONCE(mddev->suspend_hi, new);
        mddev_resume(mddev);
 
        mddev_unlock(mddev);