From 3f89a1b1314a080b5f3a3c9555b22a81efc80513 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Tue, 4 Apr 2023 14:16:24 +0300 Subject: [PATCH] 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. --- Kernel/API/Syscall.h | 2 +- Kernel/Syscalls/mmap.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) 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 Process::sys$annotate_mapping(Userspace address, int fla ErrorOr Process::sys$msync(Userspace address, size_t size, int flags) { + VERIFY_NO_PROCESS_BIG_LOCK(this); if ((flags & (MS_SYNC | MS_ASYNC | MS_INVALIDATE)) != flags) return EINVAL;