]> git.baikalelectronics.ru Git - uboot.git/commitdiff
boot: image: fixup zstd decompression buffer initialization typo
authorJérôme Carretero <cJ-uboot@zougloub.eu>
Wed, 16 Mar 2022 19:35:36 +0000 (15:35 -0400)
committerTom Rini <trini@konsulko.com>
Mon, 28 Mar 2022 12:22:17 +0000 (08:22 -0400)
The code was mistakenly initializing the input buffer twice.

Tested to be working on BeagleBone by adjusting CONFIG_SYS_BOOTM_LEN to
64MiB (probably works with less) and preparing uImage with:

 cat arch/arm/boot/Image \
  | zstd --ultra -22 --zstd=windowLog=22 \
  > linux.bin.zst

 mkimage -A arm -T kernel uImage -C zstd -d linux.bin.zst \
  -a 0x80008000 -e 0x80008000

Without the windowLog restriction, bootm fails with a zstd decompression
error 7 (window too large), which I haven't troubleshooted.

There should be a bit more documentation on the feature...

Reviewed-by: Simon Glass <sjg@chromium.org>
Fixes: 1da36f20488 image: Update image_decomp() to avoid ifdefs
boot/image.c

index 07fa2d3160d6aa6a3b676e418fe91bbe5b902aa5..121df0c83842660f3bcc47bf3ca032ba7c3eeb54 100644 (file)
@@ -500,7 +500,7 @@ int image_decomp(int comp, ulong load, ulong image_start, int type,
                        struct abuf in, out;
 
                        abuf_init_set(&in, image_buf, image_len);
-                       abuf_init_set(&in, load_buf, unc_len);
+                       abuf_init_set(&out, load_buf, unc_len);
                        ret = zstd_decompress(&in, &out);
                        if (ret >= 0) {
                                image_len = ret;