Kernel: Use u64 instead of size_t for BlockBasedFileSystem::read_block

This ensures offsets will not be truncated on large filesystems on i686
This commit is contained in:
Idan Horowitz 2022-01-25 20:24:48 +02:00
parent 0b2e93cf43
commit 2065a73727
Notes: sideshowbarker 2024-07-17 20:14:13 +09:00
2 changed files with 3 additions and 3 deletions
Kernel/FileSystem

View file

@ -212,7 +212,7 @@ ErrorOr<void> BlockBasedFileSystem::write_blocks(BlockIndex index, unsigned coun
return {};
}
ErrorOr<void> BlockBasedFileSystem::read_block(BlockIndex index, UserOrKernelBuffer* buffer, size_t count, size_t offset, bool allow_cache) const
ErrorOr<void> BlockBasedFileSystem::read_block(BlockIndex index, UserOrKernelBuffer* buffer, size_t count, u64 offset, bool allow_cache) const
{
VERIFY(m_logical_block_size);
VERIFY(offset + count <= block_size());
@ -221,7 +221,7 @@ ErrorOr<void> BlockBasedFileSystem::read_block(BlockIndex index, UserOrKernelBuf
return m_cache.with_exclusive([&](auto& cache) -> ErrorOr<void> {
if (!allow_cache) {
const_cast<BlockBasedFileSystem*>(this)->flush_specific_block_if_needed(index);
auto base_offset = index.value() * block_size() + offset;
u64 base_offset = index.value() * block_size() + offset;
auto nread = TRY(file_description().read(*buffer, base_offset, count));
VERIFY(nread == count);
return {};