The mtd partition offset must be calculated first as it will be
referenced when calculating the mtd partition size.

Change-Id: Iccfd101b0a9597ac240c25670da638a82af28980
Fixes: 1ca97ee9039 (mtd: mtdpart: Support MTD_SIZE_REMAINING with unallocated 
memory area)
Signed-off-by: Weijie Gao <weijie....@mediatek.com>
---
 drivers/mtd/mtdpart.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 3f8edeb5093..99bea6f1c85 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -236,6 +236,10 @@ int mtd_parse_partitions(struct mtd_info *parent, const 
char **_mtdparts,
                if (ret)
                        return ret;
 
+               if (parts[idx].offset == MTD_OFFSET_NOT_SPECIFIED)
+                       parts[idx].offset = cur_off;
+               cur_off += parts[idx].size;
+
                if (parts[idx].size == MTD_SIZE_REMAINING)
                        parts[idx].size = parent->size - parts[idx].offset;
 
@@ -246,10 +250,6 @@ int mtd_parse_partitions(struct mtd_info *parent, const 
char **_mtdparts,
                        return -EINVAL;
                }
 
-               if (parts[idx].offset == MTD_OFFSET_NOT_SPECIFIED)
-                       parts[idx].offset = cur_off;
-               cur_off += parts[idx].size;
-
                parts[idx].ecclayout = parent->ecclayout;
        }
 
-- 
2.34.1

Reply via email to