diff --git a/fs/vfs/main.cc b/fs/vfs/main.cc
index 7ade70ddb8ed0b4b4fa22842cedcd82441867d99..a1abda65a4afeb765d9647c0d2e4890d9b2f4162 100755
--- a/fs/vfs/main.cc
+++ b/fs/vfs/main.cc
@@ -60,6 +60,8 @@
 int	vfs_debug = VFSDB_FLAGS;
 #endif
 
+std::atomic<mode_t> global_umask{S_IWGRP | S_IWOTH};
+
 TRACEPOINT(trace_vfs_open, "\"%s\" 0x%x 0%0o", const char*, int, mode_t);
 TRACEPOINT(trace_vfs_open_ret, "%d", int);
 TRACEPOINT(trace_vfs_open_err, "%d", int);
@@ -1307,6 +1309,11 @@ int chmod(const char *pathname, mode_t mode)
 	return 0;
 }
 
+mode_t umask(mode_t newmask)
+{
+	return global_umask.exchange(newmask, std::memory_order_relaxed);
+}
+
 int
 fs_noop(void)
 {