diff --git a/Kernel/Process.h b/Kernel/Process.h index 83a3687efa..956759a258 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -323,7 +323,7 @@ public: int sys$reboot(); int sys$set_process_icon(int icon_id); int sys$realpath(Userspace); - ssize_t sys$getrandom(void*, size_t, unsigned int); + ssize_t sys$getrandom(Userspace, size_t, unsigned int); int sys$setkeymap(Userspace); int sys$module_load(const char* path, size_t path_length); int sys$module_unload(const char* name, size_t name_length); diff --git a/Kernel/Syscalls/getrandom.cpp b/Kernel/Syscalls/getrandom.cpp index 0f9b82d6ae..53361d9263 100644 --- a/Kernel/Syscalls/getrandom.cpp +++ b/Kernel/Syscalls/getrandom.cpp @@ -32,7 +32,7 @@ namespace Kernel { // We don't use the flag yet, but we could use it for distinguishing // random source like Linux, unlike the OpenBSD equivalent. However, if we // do, we should be able of the caveats that Linux has dealt with. -ssize_t Process::sys$getrandom(void* buffer, size_t buffer_size, [[maybe_unused]] unsigned flags) +ssize_t Process::sys$getrandom(Userspace buffer, size_t buffer_size, [[maybe_unused]] unsigned flags) { REQUIRE_PROMISE(stdio); if (buffer_size <= 0) @@ -42,7 +42,8 @@ ssize_t Process::sys$getrandom(void* buffer, size_t buffer_size, [[maybe_unused] return -EFAULT; SmapDisabler disabler; - get_good_random_bytes((u8*)buffer, buffer_size); + // FIXME: We should really push Userspace down through the interface. + get_good_random_bytes((u8*)buffer.ptr(), buffer_size); return 0; }