diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
index 49ccf1c17bdaf56b429bfbf90fc21de82bfbaf58..32d9ee590122585273af4f31cd6476a21ea26aa1 100644
--- a/common/spl/spl_fit.c
+++ b/common/spl/spl_fit.c
@@ -135,6 +135,7 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector,
 	int offset;
 	size_t length;
 	int len;
+	ulong size;
 	ulong load_addr, load_ptr;
 	void *src;
 	ulong overhead;
@@ -197,11 +198,13 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector,
 	    IS_ENABLED(CONFIG_SPL_GZIP)		&&
 	    image_comp == IH_COMP_GZIP		&&
 	    type == IH_TYPE_KERNEL) {
+		size = length;
 		if (gunzip((void *)load_addr, CONFIG_SYS_BOOTM_LEN,
-			   src, &length)) {
+			   src, &size)) {
 			puts("Uncompressing error\n");
 			return -EIO;
 		}
+		length = size;
 	} else {
 		memcpy((void *)load_addr, src, length);
 	}