Kernel: Remove SmapDisablers in sys$getsockname() and sys$getpeername()

Instead use the user/kernel copy helpers to only copy the minimum stuff
needed from to/from userspace.

Based on work started by Brian Gianforcaro.
This commit is contained in:
Andreas Kling 2020-01-27 21:11:36 +01:00
parent 7454926765
commit f4302b58fb
Notes: sideshowbarker 2024-07-19 09:46:27 +09:00
3 changed files with 44 additions and 36 deletions

View file

@ -263,8 +263,8 @@ public:
ssize_t sys$recvfrom(const Syscall::SC_recvfrom_params*);
int sys$getsockopt(const Syscall::SC_getsockopt_params*);
int sys$setsockopt(const Syscall::SC_setsockopt_params*);
int sys$getsockname(int sockfd, sockaddr* addr, socklen_t* addrlen);
int sys$getpeername(int sockfd, sockaddr* addr, socklen_t* addrlen);
int sys$getsockname(const Syscall::SC_getsockname_params*);
int sys$getpeername(const Syscall::SC_getpeername_params*);
int sys$sched_setparam(pid_t pid, const struct sched_param* param);
int sys$sched_getparam(pid_t pid, struct sched_param* param);
int sys$create_thread(void* (*)(void*), void* argument, const Syscall::SC_create_thread_params*);
@ -302,6 +302,9 @@ public:
int sys$pledge(const Syscall::SC_pledge_params*);
int sys$unveil(const Syscall::SC_unveil_params*);
template<bool sockname, typename Params>
int get_sock_or_peer_name(const Params&);
static void initialize();
[[noreturn]] void crash(int signal, u32 eip);