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.schif...@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.ander...@seco.com>

--Sean

Reply via email to