1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:57:35 +00:00

Kernel+LibC+crash: Add mprotect() syscall

This patch adds the mprotect() syscall to allow changing the protection
flags for memory regions. We don't do any region splitting/merging yet,
so this only works on whole mmap() regions.

Added a "crash -r" flag to verify that we crash when you attempt to
write to read-only memory. :^)
This commit is contained in:
Andreas Kling 2019-08-12 19:33:24 +02:00
parent 4917445e2e
commit 7d6689055f
7 changed files with 36 additions and 1 deletions

View file

@ -224,6 +224,16 @@ int Process::sys$munmap(void* addr, size_t size)
return 0;
}
int Process::sys$mprotect(void* addr, size_t size, int prot)
{
auto* region = region_from_range(VirtualAddress((u32)addr), size);
if (!region)
return -EINVAL;
region->set_writable(prot & PROT_WRITE);
MM.remap_region(page_directory(), *region);
return 0;
}
int Process::sys$gethostname(char* buffer, ssize_t size)
{
if (size < 0)