[PATCH] fwu: mtd: Fix dfu_alt_info generation for 2 images per bank

Michal Simek michal.simek at amd.com
Thu Jul 13 16:36:27 CEST 2023


Code rewrites the last char of size with adding &. It is visible from
dfu_alt_info print before this patch:

Make dfu_alt_info: 'mtd nor0=bank0 raw 2320000 80000;bank1 raw 27a0000
8000&mtd nor0=bank0 raw 23a0000 4000000;bank1 raw 2820000 4000000'

And after it:
Make dfu_alt_info: 'mtd nor0=bank0 raw 2320000 80000;bank1 raw 27a0000
80000&mtd nor0=bank0 raw 23a0000 4000000;bank1 raw 2820000 4000000'

Size for bank0 and bank1 must be the same because it is the same image.

Signed-off-by: Michal Simek <michal.simek at amd.com>
---

 lib/fwu_updates/fwu_mtd.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/fwu_updates/fwu_mtd.c b/lib/fwu_updates/fwu_mtd.c
index b73111ae24da..69cd3d7001f9 100644
--- a/lib/fwu_updates/fwu_mtd.c
+++ b/lib/fwu_updates/fwu_mtd.c
@@ -175,8 +175,10 @@ int fwu_gen_alt_info_from_mtd(char *buf, size_t len, struct mtd_info *mtd)
 
 		l = strlen(buf);
 		/* Replace the last ';' with '&' if there is another image. */
-		if (i != CONFIG_FWU_NUM_IMAGES_PER_BANK - 1 && l)
-			buf[l - 1] = '&';
+		if (i != CONFIG_FWU_NUM_IMAGES_PER_BANK - 1 && l) {
+			buf[l] = '&';
+			buf++;
+		}
 		len -= l;
 		buf += l;
 	}
-- 
2.36.1



More information about the U-Boot mailing list