ubi: correct the calculation of fastmap size
authorZhang Yi <yi.zhang@huawei.com>
Tue, 20 Feb 2024 02:49:03 +0000 (10:49 +0800)
committerRichard Weinberger <richard@nod.at>
Sun, 25 Feb 2024 20:30:15 +0000 (21:30 +0100)
Now that the calculation of fastmap size in ubi_calc_fm_size() is
incorrect since it miss each user volume's ubi_fm_eba structure and the
Internal UBI volume info. Let's correct the calculation.

Cc: stable@vger.kernel.org
Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/ubi/fastmap.c

index 2a728c31e6b8549353a60c38abb387d123821bc5..9a4940874be5bae4f1288209e1e38583a39b495d 100644 (file)
@@ -85,9 +85,10 @@ size_t ubi_calc_fm_size(struct ubi_device *ubi)
                sizeof(struct ubi_fm_scan_pool) +
                sizeof(struct ubi_fm_scan_pool) +
                (ubi->peb_count * sizeof(struct ubi_fm_ec)) +
-               (sizeof(struct ubi_fm_eba) +
-               (ubi->peb_count * sizeof(__be32))) +
-               sizeof(struct ubi_fm_volhdr) * UBI_MAX_VOLUMES;
+               ((sizeof(struct ubi_fm_eba) +
+                 sizeof(struct ubi_fm_volhdr)) *
+                (UBI_MAX_VOLUMES + UBI_INT_VOL_COUNT)) +
+               (ubi->peb_count * sizeof(__be32));
        return roundup(size, ubi->leb_size);
 }