From f01e395b1ca05e0ba9d11de84c78fc4a1e577e4c Mon Sep 17 00:00:00 2001 From: Takeyoshi Kikuchi Date: Sat, 13 Jan 2024 19:44:27 +0900 Subject: [PATCH] fs: partition: fs_mbr: fix for MBR block count calculation. When the MBR partition size exceeds 2 GiB, a 32-bit wrap-around occurs, causing an error in the block count calculation. * wrong brw-rw-rw- 5150605312 mmcblk0 brw-rw-rw- 629145600 mmcblk0p1 brw-rw-rw- 225443840 mmcblk0p2 <-- * fixed brw-rw-rw- 5150605312 mmcblk0 brw-rw-rw- 629145600 mmcblk0p1 brw-rw-rw- 4520411136 mmcblk0p2 <-- Signed-off-by: Takeyoshi Kikuchi --- fs/partition/fs_mbr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/partition/fs_mbr.c b/fs/partition/fs_mbr.c index 672c9d76da8..d8eccf45f91 100644 --- a/fs/partition/fs_mbr.c +++ b/fs/partition/fs_mbr.c @@ -36,7 +36,7 @@ ****************************************************************************/ #define MBR_SIZE 512 -#define MBR_LBA_TO_BLOCK(lba, blk) ((le32toh(lba) * 512 + (blk) - 1) / (blk)) +#define MBR_LBA_TO_BLOCK(lba, blk) (((blkcnt_t)le32toh(lba) * 512 + (blk) - 1) / (blk)) /**************************************************************************** * Private Types