1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:57:34 +00:00

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.
This commit is contained in:
Andreas Kling 2022-03-08 16:30:56 +01:00
parent 69a6a4d927
commit 8aad9e7448
2 changed files with 2 additions and 2 deletions

View file

@ -75,7 +75,7 @@ enum class NeedsBigProcessLock {
S(fstat, NeedsBigProcessLock::No) \ S(fstat, NeedsBigProcessLock::No) \
S(fstatvfs, NeedsBigProcessLock::No) \ S(fstatvfs, NeedsBigProcessLock::No) \
S(fsync, NeedsBigProcessLock::No) \ S(fsync, NeedsBigProcessLock::No) \
S(ftruncate, NeedsBigProcessLock::Yes) \ S(ftruncate, NeedsBigProcessLock::No) \
S(futex, NeedsBigProcessLock::Yes) \ S(futex, NeedsBigProcessLock::Yes) \
S(get_dir_entries, NeedsBigProcessLock::Yes) \ S(get_dir_entries, NeedsBigProcessLock::Yes) \
S(get_process_name, NeedsBigProcessLock::Yes) \ S(get_process_name, NeedsBigProcessLock::Yes) \

View file

@ -13,7 +13,7 @@ namespace Kernel {
// hence it can't be passed by register on 32bit platforms. // hence it can't be passed by register on 32bit platforms.
ErrorOr<FlatPtr> Process::sys$ftruncate(int fd, Userspace<off_t const*> userspace_length) ErrorOr<FlatPtr> Process::sys$ftruncate(int fd, Userspace<off_t const*> userspace_length)
{ {
VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this) VERIFY_NO_PROCESS_BIG_LOCK(this);
TRY(require_promise(Pledge::stdio)); TRY(require_promise(Pledge::stdio));
auto length = TRY(copy_typed_from_user(userspace_length)); auto length = TRY(copy_typed_from_user(userspace_length));
if (length < 0) if (length < 0)