Hi Heinrich, On Fri, 25 Aug 2023 at 19:53, Heinrich Schuchardt <[email protected]> wrote: > > 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.
Does it really? My understand is that it sets desc->part_type and it stays like that from then on? > > Signed-off-by: Heinrich Schuchardt <[email protected]> > --- > cmd/gpt.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > Reviewed-by: Simon Glass <[email protected]> > diff --git a/cmd/gpt.c b/cmd/gpt.c > index d0e165d539..99ca0a6163 100644 > --- a/cmd/gpt.c > +++ b/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); > -- > 2.40.1 >

