Kernel: Return 0 to indicate EOF when reading from end-of-file of device

If we happen to read with offset that is after the end of file of a
device, return 0 to indicate EOF. If we return a negative value,
userspace will think that something bad happened when it's really not
the case.
This commit is contained in:
Liav A 2021-03-14 23:26:33 +02:00 committed by Andreas Kling
commit 3c35ea30cc
Notes: sideshowbarker 2024-07-18 21:20:52 +09:00

View file

@ -362,7 +362,7 @@ ssize_t DevFSDeviceInode::read_bytes(off_t offset, ssize_t count, UserOrKernelBu
LOCKER(m_lock);
VERIFY(!!description);
if (!m_attached_device->can_read(*description, offset))
return -EIO;
return 0;
auto nread = const_cast<Device&>(*m_attached_device).read(*description, offset, buffer, count);
if (nread.is_error())
return -EIO;
@ -388,7 +388,7 @@ ssize_t DevFSDeviceInode::write_bytes(off_t offset, ssize_t count, const UserOrK
LOCKER(m_lock);
VERIFY(!!description);
if (!m_attached_device->can_write(*description, offset))
return -EIO;
return 0;
auto nread = const_cast<Device&>(*m_attached_device).write(*description, offset, buffer, count);
if (nread.is_error())
return -EIO;