From 703c1a485ce14ba0798179316118e917880afbea Mon Sep 17 00:00:00 2001 From: Bananymous Date: Fri, 18 Apr 2025 04:17:31 +0300 Subject: [PATCH] Kernel: Fix Ext2 bug for big files My ext2 implementation was reading wrong blocks for very big block indices. --- kernel/kernel/FS/Ext2/Inode.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/kernel/FS/Ext2/Inode.cpp b/kernel/kernel/FS/Ext2/Inode.cpp index 91c900df..d676ef6c 100644 --- a/kernel/kernel/FS/Ext2/Inode.cpp +++ b/kernel/kernel/FS/Ext2/Inode.cpp @@ -64,7 +64,9 @@ namespace Kernel const uint32_t indices_per_block = blksize() / sizeof(uint32_t); - const uint32_t divisor = (depth > 1) ? indices_per_block * (depth - 1) : 1; + uint32_t divisor = 1; + for (uint32_t i = 1; i < depth; i++) + divisor *= indices_per_block; const uint32_t next_block = block_buffer.span().as_span()[(index / divisor) % indices_per_block]; if (next_block == 0)