diff --git a/drivers/md/md.c b/drivers/md/md.c
index 04562add1920ad08ad48608c8ba5fc4662ed6cfa..aa72c88a024f7ef06f4c32263497a379c0bd7094 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -332,7 +332,7 @@ static int bi_complete(struct bio *bio, unsigned int bytes_done, int error)
 static int sync_page_io(struct block_device *bdev, sector_t sector, int size,
 		   struct page *page, int rw)
 {
-	struct bio *bio = bio_alloc(GFP_KERNEL, 1);
+	struct bio *bio = bio_alloc(GFP_NOIO, 1);
 	struct completion event;
 	int ret;