summaryrefslogtreecommitdiff
path: root/Kernel
diff options
context:
space:
mode:
authorIdan Horowitz <idan.horowitz@gmail.com>2023-04-04 14:16:24 +0300
committerIdan Horowitz <idan.horowitz@gmail.com>2023-04-06 20:30:03 +0300
commit3f89a1b1314a080b5f3a3c9555b22a81efc80513 (patch)
tree7312e62b10c2f6ad0be19f32ce694f23707185a3 /Kernel
parent1dae6a2e4a9b5579a1720ca95458115845bb75cf (diff)
downloadserenity-3f89a1b1314a080b5f3a3c9555b22a81efc80513.zip
Kernel: Mark sys$msync as not needing the big lock
All accesses to shared mutable data are already serialized behind the process address space spinlock.
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/API/Syscall.h2
-rw-r--r--Kernel/Syscalls/mmap.cpp1
2 files changed, 2 insertions, 1 deletions
diff --git a/Kernel/API/Syscall.h b/Kernel/API/Syscall.h
index ccbaf63212..1ab7d2d41c 100644
--- a/Kernel/API/Syscall.h
+++ b/Kernel/API/Syscall.h
@@ -129,7 +129,7 @@ enum class NeedsBigProcessLock {
S(mount, NeedsBigProcessLock::Yes) \
S(mprotect, NeedsBigProcessLock::No) \
S(mremap, NeedsBigProcessLock::No) \
- S(msync, NeedsBigProcessLock::Yes) \
+ S(msync, NeedsBigProcessLock::No) \
S(munmap, NeedsBigProcessLock::No) \
S(open, NeedsBigProcessLock::No) \
S(perf_event, NeedsBigProcessLock::Yes) \
diff --git a/Kernel/Syscalls/mmap.cpp b/Kernel/Syscalls/mmap.cpp
index b38521176a..16cba676ee 100644
--- a/Kernel/Syscalls/mmap.cpp
+++ b/Kernel/Syscalls/mmap.cpp
@@ -606,6 +606,7 @@ ErrorOr<FlatPtr> Process::sys$annotate_mapping(Userspace<void*> address, int fla
ErrorOr<FlatPtr> Process::sys$msync(Userspace<void*> address, size_t size, int flags)
{
+ VERIFY_NO_PROCESS_BIG_LOCK(this);
if ((flags & (MS_SYNC | MS_ASYNC | MS_INVALIDATE)) != flags)
return EINVAL;