diff --git a/common/spl/spl_legacy.c b/common/spl/spl_legacy.c
index b3624df..4c7f446 100644
--- a/common/spl/spl_legacy.c
+++ b/common/spl/spl_legacy.c
@@ -77,32 +77,29 @@
 
 int spl_load_legacy_img(struct spl_image_info *spl_image,
 			struct spl_boot_device *bootdev,
-			struct spl_load_info *load, ulong header)
+			struct spl_load_info *load, ulong offset,
+			struct legacy_img_hdr *hdr)
 {
 	__maybe_unused SizeT lzma_len;
 	__maybe_unused void *src;
-	struct legacy_img_hdr hdr;
 	ulong dataptr;
 	int ret;
 
-	/* Read header into local struct */
-	load->read(load, header, sizeof(hdr), &hdr);
-
 	/*
 	 * If the payload is compressed, the decompressed data should be
 	 * directly write to its load address.
 	 */
-	if (spl_image_get_comp(&hdr) != IH_COMP_NONE)
+	if (spl_image_get_comp(hdr) != IH_COMP_NONE)
 		spl_image->flags |= SPL_COPY_PAYLOAD_ONLY;
 
-	ret = spl_parse_image_header(spl_image, bootdev, &hdr);
+	ret = spl_parse_image_header(spl_image, bootdev, hdr);
 	if (ret)
 		return ret;
 
 	/* Read image */
-	switch (spl_image_get_comp(&hdr)) {
+	switch (spl_image_get_comp(hdr)) {
 	case IH_COMP_NONE:
-		dataptr = header;
+		dataptr = offset;
 
 		/*
 		 * Image header will be skipped only if SPL_COPY_PAYLOAD_ONLY
@@ -119,7 +116,7 @@
 		lzma_len = LZMA_LEN;
 
 		/* dataptr points to compressed payload  */
-		dataptr = header + sizeof(hdr);
+		dataptr = offset + sizeof(hdr);
 
 		debug("LZMA: Decompressing %08lx to %08lx\n",
 		      dataptr, spl_image->load_addr);
@@ -143,7 +140,7 @@
 
 	default:
 		debug("Compression method %s is not supported\n",
-		      genimg_get_comp_short_name(image_get_comp(&hdr)));
+		      genimg_get_comp_short_name(image_get_comp(hdr)));
 		return -EINVAL;
 	}
 
diff --git a/common/spl/spl_nand.c b/common/spl/spl_nand.c
index a167388..4f4c00f 100644
--- a/common/spl/spl_nand.c
+++ b/common/spl/spl_nand.c
@@ -119,7 +119,7 @@
 		load.bl_len = 1;
 		load.read = spl_nand_legacy_read;
 
-		return spl_load_legacy_img(spl_image, bootdev, &load, offset);
+		return spl_load_legacy_img(spl_image, bootdev, &load, offset, header);
 	} else {
 		err = spl_parse_image_header(spl_image, bootdev, header);
 		if (err)
diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c
index 281c613..eaa95fb 100644
--- a/common/spl/spl_nor.c
+++ b/common/spl/spl_nor.c
@@ -111,10 +111,14 @@
 
 	/* Legacy image handling */
 	if (IS_ENABLED(CONFIG_SPL_LEGACY_IMAGE_FORMAT)) {
+		struct legacy_img_hdr hdr;
+
 		load.bl_len = 1;
 		load.read = spl_nor_load_read;
+		spl_nor_load_read(&load, spl_nor_get_uboot_base(), sizeof(hdr), &hdr);
 		return spl_load_legacy_img(spl_image, bootdev, &load,
-					   spl_nor_get_uboot_base());
+					   spl_nor_get_uboot_base(),
+					   &hdr);
 	}
 
 	return 0;
