1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 12:05:00 +00:00

Kernel: Make UserOrKernelBuffer::for_user_buffer() return ErrorOr<T>

This simplifies EFAULT propagation with TRY(). :^)
This commit is contained in:
Andreas Kling 2021-11-21 12:24:32 +01:00
parent b820ae2828
commit f2c3a41a8f
7 changed files with 27 additions and 47 deletions

View file

@ -20,11 +20,9 @@ ErrorOr<FlatPtr> Process::sys$getrandom(Userspace<void*> buffer, size_t buffer_s
if (buffer_size > NumericLimits<ssize_t>::max())
return EINVAL;
auto data_buffer = UserOrKernelBuffer::for_user_buffer(buffer, buffer_size);
if (!data_buffer.has_value())
return EFAULT;
auto data_buffer = TRY(UserOrKernelBuffer::for_user_buffer(buffer, buffer_size));
return TRY(data_buffer.value().write_buffered<1024>(buffer_size, [&](Bytes bytes) {
return TRY(data_buffer.write_buffered<1024>(buffer_size, [&](Bytes bytes) {
get_good_random_bytes(bytes);
return bytes.size();
}));