kernel: mtdsplit: fix fit rootfs_data split
authorChuanhong Guo <gch981213@gmail.com>
Fri, 28 Jun 2024 08:31:59 +0000 (16:31 +0800)
committerChuanhong Guo <gch981213@gmail.com>
Sun, 7 Jul 2024 12:58:56 +0000 (20:58 +0800)
fit size should be rounded up instead of rounding down first and adding
a block. Otherwise the calculated size is one block more than needed
when fit size is exactly multiples of one block size.

Fixes: 9a863f803ec1 ("kernel: mtdsplit: add support for FIT image")
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
Signed-off-by: Qingfang Deng <qingfang.deng@siflower.com.cn>
target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_fit.c

index 3b71597d23d52b3d99cf584c96ae6b7143d13564..a271a676e10e101fb8d4c2092176657229be4986 100644 (file)
@@ -278,7 +278,7 @@ mtdsplit_fit_parse(struct mtd_info *mtd,
 
                parts[0].name = KERNEL_PART_NAME;
                parts[0].offset = fit_offset;
-               parts[0].size = mtd_rounddown_to_eb(fit_size + offset_start, mtd) + mtd->erasesize;
+               parts[0].size = mtd_roundup_to_eb(fit_size + offset_start, mtd);
 
                if (type == MTDSPLIT_PART_TYPE_UBI)
                        parts[1].name = UBI_PART_NAME;
@@ -327,7 +327,7 @@ mtdsplit_fit_parse(struct mtd_info *mtd,
                        return -ENOMEM;
 
                parts[0].name = ROOTFS_SPLIT_NAME;
-               parts[0].offset = fit_offset + mtd_rounddown_to_eb(max_size, mtd) + mtd->erasesize;
+               parts[0].offset = fit_offset + mtd_roundup_to_eb(max_size, mtd);
                parts[0].size = mtd->size - parts[0].offset;
 
                *pparts = parts;