summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIdan Horowitz <idan.horowitz@gmail.com>2023-04-04 14:00:38 +0300
committerIdan Horowitz <idan.horowitz@gmail.com>2023-04-06 20:30:03 +0300
commit0e564240a63ae7d85c91fce85af63fb71d24c794 (patch)
tree4ea408a36d8157819f88d1d6ec7abed75968d9b6
parentcb62ffbb8a75d926fa45105ff114390ece0530dd (diff)
downloadserenity-0e564240a63ae7d85c91fce85af63fb71d24c794.zip
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.
-rw-r--r--Kernel/API/Syscall.h2
-rw-r--r--Kernel/Syscalls/mmap.cpp2
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<FlatPtr> Process::sys$mprotect(Userspace<void*> addr, size_t size, int p
ErrorOr<FlatPtr> Process::sys$madvise(Userspace<void*> 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));