mtd: mtdpart: Support MTD_SIZE_REMAINING with unallocated memory area

If there is an unallocated memory area before the last, filling parting
the size calculation for MTD_SIZE_REMAINING does not take this hole
into account.
Fix this by calculating the remaining size just based on total size
and partition offset.

Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
This commit is contained in:
Alexander Stein 2025-02-20 15:58:07 +01:00 committed by Tom Rini
parent d821274054
commit 1ca97ee903

View File

@ -208,7 +208,7 @@ int mtd_parse_partitions(struct mtd_info *parent, const char **_mtdparts,
{
struct mtd_partition partition = {}, *parts;
const char *mtdparts = *_mtdparts;
uint64_t cur_off = 0, cur_sz = 0;
uint64_t cur_off = 0;
int nparts = 0;
int ret, idx;
u64 sz;
@ -237,8 +237,7 @@ int mtd_parse_partitions(struct mtd_info *parent, const char **_mtdparts,
return ret;
if (parts[idx].size == MTD_SIZE_REMAINING)
parts[idx].size = parent->size - cur_sz;
cur_sz += parts[idx].size;
parts[idx].size = parent->size - parts[idx].offset;
sz = parts[idx].size;
if (sz < parent->writesize || do_div(sz, parent->writesize)) {