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:
14
cmd/gpt.c
14
cmd/gpt.c
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user