diff --git a/fs/buffer.c b/fs/buffer.c
index 698c6b2cc462ab067debcab84f77cffcb785a9cd..49c9aada0374b4c8b407d1110d37203f26339b62 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -2382,6 +2382,7 @@ int __block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf,
 		ret = -EAGAIN;
 		goto out_unlock;
 	}
+	wait_on_page_writeback(page);
 	return 0;
 out_unlock:
 	unlock_page(page);