bootm: improve error message when gzip decompression buffer is too small
Currently, when decompressing a gzip-compressed image during bootm, a generic error such as "inflate() returned -5" is shown when the buffer is too small. However, it is not immediately clear that this is caused by CONFIG_SYS_BOOTM_LEN being too small. This patch improves error handling by: - Detecting Z_BUF_ERROR (-5) returned from the inflate() call - Suggesting the user to increase CONFIG_SYS_BOOTM_LEN when applicable - Preserving the original return code from zunzip() instead of overwriting it with -1 By providing clearer hints when decompression fails due to insufficient buffer size, this change helps users diagnose and fix boot failures more easily. Signed-off-by: Aristo Chen <aristo.chen@canonical.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
|
||||
#include <bootm.h>
|
||||
#include <image.h>
|
||||
#include <u-boot/zlib.h>
|
||||
|
||||
#define MAX_CMDLINE_SIZE SZ_4K
|
||||
|
||||
@@ -578,7 +579,8 @@ static int handle_decomp_error(int comp_type, size_t uncomp_size,
|
||||
if (ret == -ENOSYS)
|
||||
return BOOTM_ERR_UNIMPLEMENTED;
|
||||
|
||||
if (uncomp_size >= buf_size)
|
||||
if ((comp_type == IH_COMP_GZIP && ret == Z_BUF_ERROR) ||
|
||||
uncomp_size >= buf_size)
|
||||
printf("Image too large: increase CONFIG_SYS_BOOTM_LEN\n");
|
||||
else
|
||||
printf("%s: uncompress error %d\n", name, ret);
|
||||
|
@@ -299,7 +299,7 @@ __rcode int zunzip(void *dst, int dstlen, unsigned char *src,
|
||||
if (stoponerr == 1 && r != Z_STREAM_END &&
|
||||
(s.avail_in == 0 || s.avail_out == 0 || r != Z_BUF_ERROR)) {
|
||||
printf("Error: inflate() returned %d\n", r);
|
||||
err = -1;
|
||||
err = r;
|
||||
break;
|
||||
}
|
||||
} while (r == Z_BUF_ERROR);
|
||||
|
Reference in New Issue
Block a user