]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
cmd: zip: Add missing unmap_sysmem() for buffers in the unzip command
authorMarek Vasut <marek.vasut+renesas@mailbox.org>
Wed, 28 Jan 2026 19:42:03 +0000 (20:42 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 6 Feb 2026 15:29:55 +0000 (09:29 -0600)
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 <marek.vasut+renesas@mailbox.org>
cmd/unzip.c

index ba83995040bbb6022e8497019b223b76cf58102f..39af50f488d486e72182b779b74268eb79063fa7 100644 (file)
@@ -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(