From: Tony Dinh Date: Fri, 23 May 2025 05:02:01 +0000 (-0700) Subject: ext4fs: Fix: Read outside partition error X-Git-Tag: v2025.07-rc3~3 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df2ed552f0b05591090369a7fe7ddc92439dea5c;p=pandora-u-boot.git ext4fs: Fix: Read outside partition error Use lbaint_t for blknr to avoid overflow in ext4fs_read_file(). Background: blknr (block number) used in ext4fs_read_file() could be increased to a very large value and causes a wrap around at 32 bit signed integer max, thus becomes negative. This results in an out-of-normal range for sector number (during the assignment delayed_start = blknr) where delayed_start sector is typed uint64 lbaint_t. This causes the "Read outside partition" error. This patch was tested on the Synology DS116 (Armada 385) board, and a 4TB Seagate HDD. Signed-off-by: Tony Dinh --- diff --git a/fs/ext4/ext4fs.c b/fs/ext4/ext4fs.c index 1727da2dc6d..f10c622e62c 100644 --- a/fs/ext4/ext4fs.c +++ b/fs/ext4/ext4fs.c @@ -101,7 +101,7 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, blockcnt = lldiv(((len + pos) + blocksize - 1), blocksize); for (i = lldiv(pos, blocksize); i < blockcnt; i++) { - long int blknr; + lbaint_t blknr; int blockoff = pos - (blocksize * i); int blockend = blocksize; int skipfirst = 0;