Jelajahi Sumber

Kernel: Remove big lock from sys$mkdir

This syscall doesn't access any unprotected shared data.
Idan Horowitz 3 tahun lalu
induk
melakukan
e84bbfed44
2 mengubah file dengan 2 tambahan dan 2 penghapusan
  1. 1 1
      Kernel/API/Syscall.h
  2. 1 1
      Kernel/Syscalls/mkdir.cpp

+ 1 - 1
Kernel/API/Syscall.h

@@ -114,7 +114,7 @@ enum class NeedsBigProcessLock {
     S(lseek, NeedsBigProcessLock::No)                       \
     S(madvise, NeedsBigProcessLock::Yes)                    \
     S(map_time_page, NeedsBigProcessLock::Yes)              \
-    S(mkdir, NeedsBigProcessLock::Yes)                      \
+    S(mkdir, NeedsBigProcessLock::No)                       \
     S(mknod, NeedsBigProcessLock::Yes)                      \
     S(mmap, NeedsBigProcessLock::Yes)                       \
     S(mount, NeedsBigProcessLock::Yes)                      \

+ 1 - 1
Kernel/Syscalls/mkdir.cpp

@@ -12,7 +12,7 @@ namespace Kernel {
 
 ErrorOr<FlatPtr> Process::sys$mkdir(Userspace<char const*> user_path, size_t path_length, mode_t mode)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
+    VERIFY_NO_PROCESS_BIG_LOCK(this)
     TRY(require_promise(Pledge::cpath));
     auto path = TRY(get_syscall_path_argument(user_path, path_length));
     TRY(VirtualFileSystem::the().mkdir(path->view(), mode & ~umask(), current_directory()));