Kernel: Use Userspace<T> in sys$write()

This commit is contained in:
Andreas Kling 2021-03-01 14:35:06 +01:00
parent 6a6eb8844a
commit 122c7b6cbb
Notes: sideshowbarker 2024-07-18 21:48:54 +09:00
2 changed files with 3 additions and 3 deletions

View File

@ -242,7 +242,7 @@ public:
KResultOr<int> sys$close(int fd);
KResultOr<ssize_t> sys$read(int fd, Userspace<u8*>, ssize_t);
KResultOr<ssize_t> sys$readv(int fd, Userspace<const struct iovec*> iov, int iov_count);
KResultOr<ssize_t> sys$write(int fd, const u8*, ssize_t);
KResultOr<ssize_t> sys$write(int fd, Userspace<const u8*>, ssize_t);
KResultOr<ssize_t> sys$writev(int fd, Userspace<const struct iovec*> iov, int iov_count);
KResultOr<int> sys$fstat(int fd, Userspace<stat*>);
KResultOr<int> sys$stat(Userspace<const Syscall::SC_stat_params*>);

View File

@ -114,7 +114,7 @@ KResultOr<ssize_t> Process::do_write(FileDescription& description, const UserOrK
return total_nwritten;
}
KResultOr<ssize_t> Process::sys$write(int fd, const u8* data, ssize_t size)
KResultOr<ssize_t> Process::sys$write(int fd, Userspace<const u8*> data, ssize_t size)
{
REQUIRE_PROMISE(stdio);
if (size < 0)
@ -129,7 +129,7 @@ KResultOr<ssize_t> Process::sys$write(int fd, const u8* data, ssize_t size)
if (!description->is_writable())
return EBADF;
auto buffer = UserOrKernelBuffer::for_user_buffer(const_cast<u8*>(data), (size_t)size);
auto buffer = UserOrKernelBuffer::for_user_buffer(data, static_cast<size_t>(size));
if (!buffer.has_value())
return EFAULT;
return do_write(*description, buffer.value(), size);