summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorMarek Vasut <[email protected]>2026-01-28 20:42:03 +0100
committerTom Rini <[email protected]>2026-02-06 09:29:55 -0600
commit109e378e9ba791b8dffaf86aa043f20d41d2adaf (patch)
tree623929e081a9ec9b2aa8547a7d479575b88a127b /cmd
parent3a76ba66ecb65b892de8b16360a8b0e93415f712 (diff)
cmd: zip: Add missing unmap_sysmem() for buffers in the unzip command
Unmap the sysmem that got mapped by this command. Use symbolic return value for the command while updating the return value handling. Signed-off-by: Marek Vasut <[email protected]>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/unzip.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/cmd/unzip.c b/cmd/unzip.c
index ba83995040b..39af50f488d 100644
--- a/cmd/unzip.c
+++ b/cmd/unzip.c
@@ -16,6 +16,8 @@ static int do_unzip(struct cmd_tbl *cmdtp, int flag, int argc,
{
unsigned long src, dst;
unsigned long src_len = ~0UL, dst_len = ~0UL;
+ void *srcp, *dstp;
+ int ret;
switch (argc) {
case 4:
@@ -29,14 +31,21 @@ static int do_unzip(struct cmd_tbl *cmdtp, int flag, int argc,
return CMD_RET_USAGE;
}
- if (gunzip(map_sysmem(dst, dst_len), dst_len, map_sysmem(src, 0),
- &src_len) != 0)
- return 1;
+ srcp = map_sysmem(dst, dst_len);
+ dstp = map_sysmem(src, 0);
+
+ ret = gunzip(srcp, dst_len, dstp, &src_len);
+
+ unmap_sysmem(dstp);
+ unmap_sysmem(srcp);
+
+ if (ret)
+ return CMD_RET_FAILURE;
printf("Uncompressed size: %lu = 0x%lX\n", src_len, src_len);
env_set_hex("filesize", src_len);
- return 0;
+ return CMD_RET_SUCCESS;
}
U_BOOT_CMD(