1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:38:11 +00:00

Kernel: Remove SmapDisabler in sys$setsockopt()

This commit is contained in:
Andreas Kling 2020-07-31 00:26:33 +02:00
parent 292cd53192
commit 3023a89e9b
3 changed files with 25 additions and 27 deletions

View file

@ -317,29 +317,21 @@ int Process::sys$getsockopt(const Syscall::SC_getsockopt_params* params)
return socket.getsockopt(*description, level, option, value, value_size);
}
int Process::sys$setsockopt(const Syscall::SC_setsockopt_params* params)
int Process::sys$setsockopt(const Syscall::SC_setsockopt_params* user_params)
{
if (!validate_read_typed(params))
Syscall::SC_setsockopt_params params;
if (!validate_read_and_copy_typed(&params, user_params))
return -EFAULT;
SmapDisabler disabler;
int sockfd = params->sockfd;
int level = params->level;
int option = params->option;
const void* value = params->value;
socklen_t value_size = params->value_size;
if (!validate_read(value, value_size))
if (!validate_read(params.value, params.value_size))
return -EFAULT;
auto description = file_description(sockfd);
auto description = file_description(params.sockfd);
if (!description)
return -EBADF;
if (!description->is_socket())
return -ENOTSOCK;
auto& socket = *description->socket();
REQUIRE_PROMISE_FOR_SOCKET_DOMAIN(socket.domain());
return socket.setsockopt(level, option, value, value_size);
return socket.setsockopt(params.level, params.option, params.value, params.value_size);
}
}