From df6907f6019ec178735f06e1b55cef6a90234201 Mon Sep 17 00:00:00 2001 From: bilaliscarioth <98892516+bilaliscarioth@users.noreply.github.com> Date: Fri, 23 Aug 2024 16:28:00 +0200 Subject: [PATCH] openbsd: adding EPERM for msync() against hitting a immutable region page (#18701) --- lib/std/posix.zig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/std/posix.zig b/lib/std/posix.zig index bc270395cc..665ea17788 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -4746,11 +4746,13 @@ pub fn munmap(memory: []align(mem.page_size) const u8) void { pub const MSyncError = error{ UnmappedMemory, + PermissionDenied, } || UnexpectedError; pub fn msync(memory: []align(mem.page_size) u8, flags: i32) MSyncError!void { switch (errno(system.msync(memory.ptr, memory.len, flags))) { .SUCCESS => return, + .PERM => return error.PermissionDenied, .NOMEM => return error.UnmappedMemory, // Unsuccessful, provided pointer does not point mapped memory .INVAL => unreachable, // Invalid parameters. else => unreachable, @@ -7106,6 +7108,7 @@ pub const MadviseError = error{ pub fn madvise(ptr: [*]align(mem.page_size) u8, length: usize, advice: u32) MadviseError!void { switch (errno(system.madvise(ptr, length, advice))) { .SUCCESS => return, + .PERM => return error.PermissionDenied, .ACCES => return error.AccessDenied, .AGAIN => return error.SystemResources, .BADF => unreachable, // The map exists, but the area maps something that isn't a file.