mirror of
https://github.com/RGBCube/serenity
synced 2025-07-03 05:32:13 +00:00
Kernel: Make copy_{from,to}_user() return KResult and use TRY()
This makes EFAULT propagation flow much more naturally. :^)
This commit is contained in:
parent
9903f5c6ef
commit
48a0b31c47
57 changed files with 318 additions and 551 deletions
|
@ -24,8 +24,7 @@ KResultOr<NonnullOwnPtr<KString>> UserOrKernelBuffer::try_copy_into_kstring(size
|
|||
auto kstring = KString::try_create_uninitialized(size, buffer);
|
||||
if (!kstring)
|
||||
return ENOMEM;
|
||||
if (!copy_from_user(buffer, m_buffer, size))
|
||||
return EFAULT;
|
||||
TRY(copy_from_user(buffer, m_buffer, size));
|
||||
return kstring.release_nonnull();
|
||||
}
|
||||
|
||||
|
@ -41,7 +40,7 @@ bool UserOrKernelBuffer::write(const void* src, size_t offset, size_t len)
|
|||
return false;
|
||||
|
||||
if (Memory::is_user_address(VirtualAddress(m_buffer)))
|
||||
return copy_to_user(m_buffer + offset, src, len);
|
||||
return copy_to_user(m_buffer + offset, src, len).is_success();
|
||||
|
||||
memcpy(m_buffer + offset, src, len);
|
||||
return true;
|
||||
|
@ -53,7 +52,7 @@ bool UserOrKernelBuffer::read(void* dest, size_t offset, size_t len) const
|
|||
return false;
|
||||
|
||||
if (Memory::is_user_address(VirtualAddress(m_buffer)))
|
||||
return copy_from_user(dest, m_buffer + offset, len);
|
||||
return copy_from_user(dest, m_buffer + offset, len).is_success();
|
||||
|
||||
memcpy(dest, m_buffer + offset, len);
|
||||
return true;
|
||||
|
@ -65,7 +64,7 @@ bool UserOrKernelBuffer::memset(int value, size_t offset, size_t len)
|
|||
return false;
|
||||
|
||||
if (Memory::is_user_address(VirtualAddress(m_buffer)))
|
||||
return memset_user(m_buffer + offset, value, len);
|
||||
return memset_user(m_buffer + offset, value, len).is_success();
|
||||
|
||||
::memset(m_buffer + offset, value, len);
|
||||
return true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue