diff --git a/fs/io-wq.c b/fs/io-wq.c
index b6e311e57b47cd7742d9fc8b5b47e4e3f2be3807..67d157bcf2fb1568551f2191ae8332ec452363dc 100644
--- a/fs/io-wq.c
+++ b/fs/io-wq.c
@@ -534,6 +534,8 @@ static void io_worker_handle_work(struct io_worker *worker)
 				linked = NULL;
 			}
 			io_assign_current_work(worker, work);
+			if (current->fs != worker->restore_fs)
+				current->fs = worker->restore_fs;
 			wq->free_work(old_work);
 
 			if (linked)