[PATCH] fastboot: only look up real partition names when no alias exists
Matthias Schiffer
matthias.schiffer at ew.tq-group.com
Wed Jan 26 10:54:52 CET 2022
On Fri, 2021-12-17 at 18:20 -0500, Sean Anderson wrote:
> Hi Matthias,
>
> On 12/16/21 5:26 AM, Matthias Schiffer wrote:
> > Having U-Boot look up the passed partition name even though an
> > alias
> > exists is unexpected, leading to warning messages (when the alias
> > name
> > doesn't exist as a real partition name) or the use of the wrong
> > partition.
> >
> > Change part_get_info_by_name_or_alias() to consider real partitions
> > names only if no alias of the same name exists, allowing to use
> > aliases
> > to override the configuration for existing partition names.
>
> Much saner IMO.
>
> I think the correct move in the long term is to add a "quiet"
> parameter to do_get_part_info (and all its helpers). This is OK as an
> incremental improvement.
>
> > Also change one use of strcpy() to strlcpy().
> >
> > Signed-off-by: Matthias Schiffer <matthias.schiffer at ew.tq-group.com
> > >
> > ---
> > drivers/fastboot/fb_mmc.c | 29 ++++++++++++-----------------
> > 1 file changed, 12 insertions(+), 17 deletions(-)
> >
> > diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
> > index 2738dc836e..fb7791d9da 100644
> > --- a/drivers/fastboot/fb_mmc.c
> > +++ b/drivers/fastboot/fb_mmc.c
> > @@ -104,23 +104,18 @@ static int
> > part_get_info_by_name_or_alias(struct blk_desc **dev_desc,
> > const char *name,
> > struct disk_partition *info)
> > {
> > - int ret;
> > -
> > - ret = do_get_part_info(dev_desc, name, info);
> > - if (ret < 0) {
> > - /* strlen("fastboot_partition_alias_") + PART_NAME_LEN
> > + 1 */
> > - char env_alias_name[25 + PART_NAME_LEN + 1];
> > - char *aliased_part_name;
> > -
> > - /* check for alias */
> > - strcpy(env_alias_name, "fastboot_partition_alias_");
> > - strlcat(env_alias_name, name, sizeof(env_alias_name));
> > - aliased_part_name = env_get(env_alias_name);
> > - if (aliased_part_name != NULL)
> > - ret = do_get_part_info(dev_desc,
> > aliased_part_name,
> > - info);
> > - }
> > - return ret;
> > + /* strlen("fastboot_partition_alias_") + PART_NAME_LEN + 1 */
> > + char env_alias_name[25 + PART_NAME_LEN + 1];
> > + char *aliased_part_name;
> > +
> > + /* check for alias */
> > + strlcpy(env_alias_name, "fastboot_partition_alias_",
> > sizeof(env_alias_name));
> > + strlcat(env_alias_name, name, sizeof(env_alias_name));
> > + aliased_part_name = env_get(env_alias_name);
> > + if (aliased_part_name)
> > + name = aliased_part_name;
> > +
> > + return do_get_part_info(dev_desc, name, info);
> > }
> >
> > /**
> >
>
> Reviewed-by: Sean Anderson <sean.anderson at seco.com>
>
> --Sean
Can we get this committed?
Kind regards,
Matthias
More information about the U-Boot
mailing list