diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 18019d6..0684bc0 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -722,6 +722,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 static image_header_t *image_get_kernel (ulong img_addr, int verify)
 {
 	image_header_t *hdr = (image_header_t *)img_addr;
+	void *img_copy_ram;
 
 	if (!image_check_magic(hdr)) {
 		puts ("Bad Magic Number\n");
@@ -739,6 +740,12 @@ static image_header_t *image_get_kernel (ulong img_addr, int verify)
 	show_boot_progress (3);
 	image_print_contents (hdr);
 
+	img_copy_ram = malloc(image_get_image_size(hdr));
+	if (img_copy_ram != NULL) {
+		memcpy(img_copy_ram, hdr, image_get_image_size(hdr));
+		hdr = img_copy_ram;
+	}
+
 	if (verify) {
 		puts ("   Verifying Checksum ... ");
 		if (!image_check_dcrc (hdr)) {
