cmd: fix gpt enumerate

Do not assume that partitions are numbered continuously starting at 1.

Only a single partition table type can exist on a block device. If we found
a GPT partition table, we must not re-enumerate with the MBR partition
driver which would find the protective partition.

Fixes: 12fc1f3bb2 ("cmd: gpt: add eMMC and GPT support")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Heinrich Schuchardt
2023-08-26 03:53:42 +02:00
parent 018346770b
commit 41cd23b7be

View File

@@ -691,12 +691,13 @@ static int gpt_enumerate(struct blk_desc *desc)
int ret;
int i;
if (part_drv->test(desc))
continue;
for (i = 1; i < part_drv->max_entries; i++) {
ret = part_drv->get_info(desc, i, &pinfo);
if (ret) {
/* no more entries in table */
break;
}
if (ret)
continue;
ptr = &part_list[str_len];
tmp_len = strlen((const char *)pinfo.name);
@@ -711,9 +712,10 @@ static int gpt_enumerate(struct blk_desc *desc)
/* One byte for space(" ") delimiter */
ptr[tmp_len] = ' ';
}
if (*part_list)
part_list[strlen(part_list) - 1] = 0;
break;
}
if (*part_list)
part_list[strlen(part_list) - 1] = 0;
debug("setenv gpt_partition_list %s\n", part_list);
return env_set("gpt_partition_list", part_list);