From 8aad9e7448c995b1f155852dac21ffbd6c82e78a Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 8 Mar 2022 16:30:56 +0100 Subject: [PATCH] Kernel: Mark sys$ftruncate() as not needing the big lock This syscall doesn't access any data that was implicitly protected by the big lock. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/ftruncate.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 68e3fc7f98..c0afb0426c 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -75,7 +75,7 @@ enum class NeedsBigProcessLock { S(fstat, NeedsBigProcessLock::No) \ S(fstatvfs, NeedsBigProcessLock::No) \ S(fsync, NeedsBigProcessLock::No) \ - S(ftruncate, NeedsBigProcessLock::Yes) \ + S(ftruncate, NeedsBigProcessLock::No) \ S(futex, NeedsBigProcessLock::Yes) \ S(get_dir_entries, NeedsBigProcessLock::Yes) \ S(get_process_name, NeedsBigProcessLock::Yes) \ diff --git a/Kernel/Syscalls/ftruncate.cpp b/Kernel/Syscalls/ftruncate.cpp index bd8cbd6b5f..5bde524874 100644 --- a/Kernel/Syscalls/ftruncate.cpp +++ b/Kernel/Syscalls/ftruncate.cpp @@ -13,7 +13,7 @@ namespace Kernel { // hence it can't be passed by register on 32bit platforms. ErrorOr Process::sys$ftruncate(int fd, Userspace userspace_length) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this) + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::stdio)); auto length = TRY(copy_typed_from_user(userspace_length)); if (length < 0)