From 0e564240a63ae7d85c91fce85af63fb71d24c794 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Tue, 4 Apr 2023 14:00:38 +0300 Subject: [PATCH] Kernel: Mark sys$madvise as not needing the big lock All accesses to shared mutable data are already serialized behind the process address space spinlock. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/mmap.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h index 6ea599f6bd..dec6baa4b5 100644 --- a/Kernel/API/Syscall.h +++ b/Kernel/API/Syscall.h @@ -121,7 +121,7 @@ enum class NeedsBigProcessLock { S(link, NeedsBigProcessLock::No) \ S(listen, NeedsBigProcessLock::No) \ S(lseek, NeedsBigProcessLock::No) \ - S(madvise, NeedsBigProcessLock::Yes) \ + S(madvise, NeedsBigProcessLock::No) \ S(map_time_page, NeedsBigProcessLock::Yes) \ S(mkdir, NeedsBigProcessLock::No) \ S(mknod, NeedsBigProcessLock::No) \ diff --git a/Kernel/Syscalls/mmap.cpp b/Kernel/Syscalls/mmap.cpp index 577545aa73..73a7b3b852 100644 --- a/Kernel/Syscalls/mmap.cpp +++ b/Kernel/Syscalls/mmap.cpp @@ -407,7 +407,7 @@ ErrorOr Process::sys$mprotect(Userspace addr, size_t size, int p ErrorOr Process::sys$madvise(Userspace address, size_t size, int advice) { - VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); + VERIFY_NO_PROCESS_BIG_LOCK(this); TRY(require_promise(Pledge::stdio)); auto range_to_madvise = TRY(Memory::expand_range_to_page_boundaries(address.ptr(), size));