فهرست منبع

Kernel: Make sys$utime() and sys$utimensat() not take the big lock

Andreas Kling 3 سال پیش
والد
کامیت
930dedfbd8
3فایلهای تغییر یافته به همراه4 افزوده شده و 4 حذف شده
  1. 2 2
      Kernel/API/Syscall.h
  2. 1 1
      Kernel/Syscalls/utime.cpp
  3. 1 1
      Kernel/Syscalls/utimensat.cpp

+ 2 - 2
Kernel/API/Syscall.h

@@ -187,8 +187,8 @@ enum class NeedsBigProcessLock {
     S(uname, NeedsBigProcessLock::No)                       \
     S(unlink, NeedsBigProcessLock::No)                      \
     S(unveil, NeedsBigProcessLock::No)                      \
-    S(utime, NeedsBigProcessLock::Yes)                      \
-    S(utimensat, NeedsBigProcessLock::Yes)                  \
+    S(utime, NeedsBigProcessLock::No)                       \
+    S(utimensat, NeedsBigProcessLock::No)                   \
     S(waitid, NeedsBigProcessLock::Yes)                     \
     S(write, NeedsBigProcessLock::Yes)                      \
     S(writev, NeedsBigProcessLock::Yes)                     \

+ 1 - 1
Kernel/Syscalls/utime.cpp

@@ -12,7 +12,7 @@ namespace Kernel {
 
 ErrorOr<FlatPtr> Process::sys$utime(Userspace<char const*> user_path, size_t path_length, Userspace<const struct utimbuf*> user_buf)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
     TRY(require_promise(Pledge::fattr));
     auto path = TRY(get_syscall_path_argument(user_path, path_length));
     utimbuf buf;

+ 1 - 1
Kernel/Syscalls/utimensat.cpp

@@ -14,7 +14,7 @@ namespace Kernel {
 
 ErrorOr<FlatPtr> Process::sys$utimensat(Userspace<Syscall::SC_utimensat_params const*> user_params)
 {
-    VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this);
+    VERIFY_NO_PROCESS_BIG_LOCK(this);
     TRY(require_promise(Pledge::fattr));
 
     auto params = TRY(copy_typed_from_user(user_params));