[PATCH] dfu: Prevent set_dfu_alt_info() from overwriting a previous value
Jonathan Humphreys
j-humphreys at ti.com
Tue Dec 17 21:48:35 CET 2024
If CONFIG_SET_DFU_ALT_INFO is enabled, the dfu_alt_info environment
variable is dynamically set when initializing the DFU entities, which is
done as part of normal flow of a DFU operation.
The USB DFU boot support will set it's own specific value for dfu_alt_info
before performing the DFU operation. This means that if
CONFIG_SET_DFU_ALT_INFO is enabled, the dfu_alt_info environment variable
that the USB DFU boot path had set is overwritten, causing USB DFU boot to
fail.
Likewise, if the user sets their own value for dfu_alt_info, say at the
U-Boot prompt, it get's overwritten if CONFIG_SET_DFU_ALT_INFO is enabled.
This patch will first check that dfu_alt_info isn't already set before
calling set_dfu_alt_info(), when CONFIG_SET_DFU_ALT_INFO is enabled.
Signed-off-by: Jonathan Humphreys <j-humphreys at ti.com>
---
drivers/dfu/dfu.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 756569217bb..ab8abae1d89 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -169,10 +169,13 @@ int dfu_init_env_entities(char *interface, char *devstr)
dfu_reinit_needed = false;
dfu_alt_info_changed = false;
+ str_env = env_get("dfu_alt_info");
#ifdef CONFIG_SET_DFU_ALT_INFO
- set_dfu_alt_info(interface, devstr);
+ if (!str_env) {
+ set_dfu_alt_info(interface, devstr);
+ str_env = env_get("dfu_alt_info");
+ }
#endif
- str_env = env_get("dfu_alt_info");
if (!str_env) {
pr_err("\"dfu_alt_info\" env variable not defined!\n");
return -EINVAL;
--
2.34.1
More information about the U-Boot
mailing list