aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias.schiffer@ew.tq-group.com>2021-12-16 11:26:38 +0100
committerTom Rini <trini@konsulko.com>2022-01-28 10:21:51 -0500
commit2e3cfadc640912be08abd7a10615ad0dba00d5ee (patch)
tree56931421de805d31db865002d6b2abd84dd7e49a
parent743dc039e2bb635eb3917bb4413d78e4ef67988b (diff)
downloadu-boot-WIP/2022-01-28-fastboot-updates.zip
u-boot-WIP/2022-01-28-fastboot-updates.tar.gz
u-boot-WIP/2022-01-28-fastboot-updates.tar.bz2
fastboot: only look up real partition names when no alias existsWIP/2022-01-28-fastboot-updates
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. Also change one use of strcpy() to strlcpy(). Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> Reviewed-by: Sean Anderson <sean.anderson@seco.com>
-rw-r--r--drivers/fastboot/fb_mmc.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
index 2710879..c62e414 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);
}
/**