Kernel: Let the user read/write more than one page from/to dev files

Previously reads and writes to /dev/zero, /dev/full, /dev/null and
/dev/random were limited to 4096 bytes.

This removes that restriction so that users can enjoy more zero bytes
in their buffers.
This commit is contained in:
Gunnar Beutner 2021-05-27 09:13:49 +02:00 committed by Andreas Kling
parent a272c04c8a
commit 1ce32ef675
Notes: sideshowbarker 2024-07-18 17:20:55 +09:00
4 changed files with 7 additions and 9 deletions

View file

@ -28,10 +28,9 @@ bool FullDevice::can_read(const FileDescription&, size_t) const
KResultOr<size_t> FullDevice::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size)
{
ssize_t count = min(static_cast<size_t>(PAGE_SIZE), size);
if (!buffer.memset(0, count))
if (!buffer.memset(0, size))
return EFAULT;
return count;
return size;
}
KResultOr<size_t> FullDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t size)

View file

@ -43,7 +43,7 @@ KResultOr<size_t> NullDevice::read(FileDescription&, u64, UserOrKernelBuffer&, s
KResultOr<size_t> NullDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t buffer_size)
{
return min(static_cast<size_t>(PAGE_SIZE), buffer_size);
return buffer_size;
}
}

View file

@ -34,7 +34,7 @@ KResultOr<size_t> RandomDevice::read(FileDescription&, u64, UserOrKernelBuffer&
KResultOr<size_t> RandomDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t size)
{
// FIXME: Use input for entropy? I guess that could be a neat feature?
return min(static_cast<size_t>(PAGE_SIZE), size);
return size;
}
}

View file

@ -26,15 +26,14 @@ bool ZeroDevice::can_read(const FileDescription&, size_t) const
KResultOr<size_t> ZeroDevice::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size)
{
ssize_t count = min(static_cast<size_t>(PAGE_SIZE), size);
if (!buffer.memset(0, count))
if (!buffer.memset(0, size))
return EFAULT;
return count;
return size;
}
KResultOr<size_t> ZeroDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t size)
{
return min(static_cast<size_t>(PAGE_SIZE), size);
return size;
}
}