[PATCH v2] cmd: zip: Use map_sysmem() with buffers in the zip command

Marek Vasut marek.vasut+renesas at mailbox.org
Wed Jan 28 20:41:30 CET 2026


The current implementation casts an address to a pointer. Make it more
sandbox-friendly by using map_sysmem().

Use symbolic return value for the command while updating
the return value handling.

Signed-off-by: Marek Vasut <marek.vasut+renesas at mailbox.org>
---
Cc: Alexander Graf <agraf at csgraf.de>
Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
Cc: Ilias Apalodimas <ilias.apalodimas at linaro.org>
Cc: Jerome Forissier <jerome at forissier.org>
Cc: Mattijs Korpershoek <mkorpershoek at kernel.org>
Cc: Neil Armstrong <neil.armstrong at linaro.org>
Cc: Peng Fan <peng.fan at nxp.com>
Cc: Quentin Schulz <quentin.schulz at cherry.de>
Cc: Simon Glass <sjg at chromium.org>
Cc: Tom Rini <trini at konsulko.com>
Cc: Yuya Hamamachi <yuya.hamamachi.sx at renesas.com>
Cc: u-boot at lists.denx.de
---
V2: - Add missing unmap_sysmem()
    - Use symbolic CMD_RET_FAILURE/CMD_RET_SUCCESS return values
---
 cmd/zip.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/cmd/zip.c b/cmd/zip.c
index 2d255428822..4bd1179390b 100644
--- a/cmd/zip.c
+++ b/cmd/zip.c
@@ -7,12 +7,15 @@
 #include <command.h>
 #include <env.h>
 #include <gzip.h>
+#include <mapmem.h>
 #include <vsprintf.h>
 
 static int do_zip(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
 	unsigned long src, dst;
 	unsigned long src_len, dst_len = ~0UL;
+	void *srcp, *dstp;
+	int ret;
 
 	switch (argc) {
 		case 5:
@@ -27,13 +30,21 @@ static int do_zip(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 			return cmd_usage(cmdtp);
 	}
 
-	if (gzip((void *) dst, &dst_len, (void *) src, src_len) != 0)
-		return 1;
+	srcp = map_sysmem(src, src_len);
+	dstp = map_sysmem(dst, dst_len);
+
+	ret = gzip(dstp, &dst_len, srcp, src_len);
+
+	unmap_sysmem(dstp);
+	unmap_sysmem(srcp);
+
+	if (ret)
+		return CMD_RET_FAILURE;
 
 	printf("Compressed size: %lu = 0x%lX\n", dst_len, dst_len);
 	env_set_hex("filesize", dst_len);
 
-	return 0;
+	return CMD_RET_SUCCESS;
 }
 
 U_BOOT_CMD(
-- 
2.51.0



More information about the U-Boot mailing list