diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index 92a5b8283528..0209ebe97e7f 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -2123,10 +2123,12 @@ static long wb_writeback(struct bdi_writeback *wb,
 			queue_io(wb, work, dirtied_before);
 			queued = true;
 		}
+		down_write(&work->sb->s_umount);
 		if (work->sb)
 			progress = writeback_sb_inodes(work->sb, wb, work);
 		else
 			progress = __writeback_inodes_wb(wb, work);
+		up_write(&work->sb->s_umount);
 		trace_writeback_written(wb, work);
 
 		/*