mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:57:44 +00:00
Kernel: Use Userspace<T> in sys${munmap,mprotect,madvise,msyscall}()
This commit is contained in:
parent
bebceaa32c
commit
272c2e6ec5
2 changed files with 12 additions and 12 deletions
|
@ -253,11 +253,11 @@ public:
|
||||||
KResultOr<pid_t> sys$waitid(Userspace<const Syscall::SC_waitid_params*>);
|
KResultOr<pid_t> sys$waitid(Userspace<const Syscall::SC_waitid_params*>);
|
||||||
KResultOr<FlatPtr> sys$mmap(Userspace<const Syscall::SC_mmap_params*>);
|
KResultOr<FlatPtr> sys$mmap(Userspace<const Syscall::SC_mmap_params*>);
|
||||||
KResultOr<FlatPtr> sys$mremap(Userspace<const Syscall::SC_mremap_params*>);
|
KResultOr<FlatPtr> sys$mremap(Userspace<const Syscall::SC_mremap_params*>);
|
||||||
KResultOr<int> sys$munmap(void*, size_t size);
|
KResultOr<int> sys$munmap(Userspace<void*>, size_t);
|
||||||
KResultOr<int> sys$set_mmap_name(Userspace<const Syscall::SC_set_mmap_name_params*>);
|
KResultOr<int> sys$set_mmap_name(Userspace<const Syscall::SC_set_mmap_name_params*>);
|
||||||
KResultOr<int> sys$mprotect(void*, size_t, int prot);
|
KResultOr<int> sys$mprotect(Userspace<void*>, size_t, int prot);
|
||||||
KResultOr<int> sys$madvise(void*, size_t, int advice);
|
KResultOr<int> sys$madvise(Userspace<void*>, size_t, int advice);
|
||||||
KResultOr<int> sys$msyscall(void*);
|
KResultOr<int> sys$msyscall(Userspace<void*>);
|
||||||
KResultOr<int> sys$purge(int mode);
|
KResultOr<int> sys$purge(int mode);
|
||||||
KResultOr<int> sys$select(Userspace<const Syscall::SC_select_params*>);
|
KResultOr<int> sys$select(Userspace<const Syscall::SC_select_params*>);
|
||||||
KResultOr<int> sys$poll(Userspace<const Syscall::SC_poll_params*>);
|
KResultOr<int> sys$poll(Userspace<const Syscall::SC_poll_params*>);
|
||||||
|
|
|
@ -145,7 +145,7 @@ KResultOr<FlatPtr> Process::sys$mmap(Userspace<const Syscall::SC_mmap_params*> u
|
||||||
if (!copy_from_user(¶ms, user_params))
|
if (!copy_from_user(¶ms, user_params))
|
||||||
return EFAULT;
|
return EFAULT;
|
||||||
|
|
||||||
void* addr = (void*)params.addr;
|
FlatPtr addr = params.addr;
|
||||||
size_t size = params.size;
|
size_t size = params.size;
|
||||||
size_t alignment = params.alignment;
|
size_t alignment = params.alignment;
|
||||||
int prot = params.prot;
|
int prot = params.prot;
|
||||||
|
@ -288,7 +288,7 @@ static KResultOr<Range> expand_range_to_page_boundaries(FlatPtr address, size_t
|
||||||
return Range { base, end - base.get() };
|
return Range { base, end - base.get() };
|
||||||
}
|
}
|
||||||
|
|
||||||
KResultOr<int> Process::sys$mprotect(void* addr, size_t size, int prot)
|
KResultOr<int> Process::sys$mprotect(Userspace<void*> addr, size_t size, int prot)
|
||||||
{
|
{
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
|
|
||||||
|
@ -296,7 +296,7 @@ KResultOr<int> Process::sys$mprotect(void* addr, size_t size, int prot)
|
||||||
REQUIRE_PROMISE(prot_exec);
|
REQUIRE_PROMISE(prot_exec);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto range_or_error = expand_range_to_page_boundaries((FlatPtr)addr, size);
|
auto range_or_error = expand_range_to_page_boundaries(addr, size);
|
||||||
if (range_or_error.is_error())
|
if (range_or_error.is_error())
|
||||||
return range_or_error.error();
|
return range_or_error.error();
|
||||||
|
|
||||||
|
@ -366,11 +366,11 @@ KResultOr<int> Process::sys$mprotect(void* addr, size_t size, int prot)
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
KResultOr<int> Process::sys$madvise(void* address, size_t size, int advice)
|
KResultOr<int> Process::sys$madvise(Userspace<void*> address, size_t size, int advice)
|
||||||
{
|
{
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
|
|
||||||
auto range_or_error = expand_range_to_page_boundaries((FlatPtr)address, size);
|
auto range_or_error = expand_range_to_page_boundaries(address, size);
|
||||||
if (range_or_error.is_error())
|
if (range_or_error.is_error())
|
||||||
return range_or_error.error();
|
return range_or_error.error();
|
||||||
|
|
||||||
|
@ -445,14 +445,14 @@ KResultOr<int> Process::sys$set_mmap_name(Userspace<const Syscall::SC_set_mmap_n
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
KResultOr<int> Process::sys$munmap(void* addr, size_t size)
|
KResultOr<int> Process::sys$munmap(Userspace<void*> addr, size_t size)
|
||||||
{
|
{
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
|
|
||||||
if (!size)
|
if (!size)
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
|
|
||||||
auto range_or_error = expand_range_to_page_boundaries((FlatPtr)addr, size);
|
auto range_or_error = expand_range_to_page_boundaries(addr, size);
|
||||||
if (range_or_error.is_error())
|
if (range_or_error.is_error())
|
||||||
return range_or_error.error();
|
return range_or_error.error();
|
||||||
|
|
||||||
|
@ -582,7 +582,7 @@ KResultOr<FlatPtr> Process::sys$allocate_tls(size_t size)
|
||||||
return m_master_tls_region.unsafe_ptr()->vaddr().get();
|
return m_master_tls_region.unsafe_ptr()->vaddr().get();
|
||||||
}
|
}
|
||||||
|
|
||||||
KResultOr<int> Process::sys$msyscall(void* address)
|
KResultOr<int> Process::sys$msyscall(Userspace<void*> address)
|
||||||
{
|
{
|
||||||
if (space().enforces_syscall_regions())
|
if (space().enforces_syscall_regions())
|
||||||
return EPERM;
|
return EPERM;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue