mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 05:07:34 +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:
parent
4917445e2e
commit
7d6689055f
7 changed files with 36 additions and 1 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue