openbsd: adding EPERM for msync() against hitting a immutable region page (#18701)
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user