diff --git a/common/image.c b/common/image.c
index 95c7a15..8df03f5 100644
--- a/common/image.c
+++ b/common/image.c
@@ -373,13 +373,13 @@
 
 	if (!image_check_magic(rd_hdr)) {
 		puts("Bad Magic Number\n");
-		show_boot_progress(-10);
+		show_boot_error(10);
 		return NULL;
 	}
 
 	if (!image_check_hcrc(rd_hdr)) {
 		puts("Bad Header Checksum\n");
-		show_boot_progress(-11);
+		show_boot_error(11);
 		return NULL;
 	}
 
@@ -390,7 +390,7 @@
 		puts("   Verifying Checksum ... ");
 		if (!image_check_dcrc(rd_hdr)) {
 			puts("Bad Data CRC\n");
-			show_boot_progress(-12);
+			show_boot_error(12);
 			return NULL;
 		}
 		puts("OK\n");
@@ -403,7 +403,7 @@
 	    !image_check_type(rd_hdr, IH_TYPE_RAMDISK)) {
 		printf("No Linux %s Ramdisk Image\n",
 				genimg_get_arch_name(arch));
-		show_boot_progress(-13);
+		show_boot_error(13);
 		return NULL;
 	}
 
@@ -915,7 +915,7 @@
 			show_boot_progress(120);
 			if (!fit_check_format(fit_hdr)) {
 				puts("Bad FIT ramdisk image format!\n");
-				show_boot_progress(-120);
+				show_boot_error(120);
 				return 1;
 			}
 			show_boot_progress(121);
@@ -932,7 +932,7 @@
 				if (cfg_noffset < 0) {
 					puts("Could not find configuration "
 						"node\n");
-					show_boot_progress(-122);
+					show_boot_error(122);
 					return 1;
 				}
 				fit_uname_config = fdt_get_name(fit_hdr,
@@ -952,7 +952,7 @@
 			}
 			if (rd_noffset < 0) {
 				puts("Could not find subimage node\n");
-				show_boot_progress(-124);
+				show_boot_error(124);
 				return 1;
 			}
 
@@ -968,7 +968,7 @@
 			if (fit_image_get_data(fit_hdr, rd_noffset, &data,
 						&size)) {
 				puts("Could not find ramdisk subimage data!\n");
-				show_boot_progress(-127);
+				show_boot_error(127);
 				return 1;
 			}
 			show_boot_progress(128);
@@ -979,7 +979,7 @@
 			if (fit_image_get_load(fit_hdr, rd_noffset, &rd_load)) {
 				puts("Can't get ramdisk subimage load "
 					"address!\n");
-				show_boot_progress(-129);
+				show_boot_error(129);
 				return 1;
 			}
 			show_boot_progress(129);
@@ -3176,7 +3176,7 @@
 		puts("   Verifying Hash Integrity ... ");
 		if (!fit_image_check_hashes(fit, rd_noffset)) {
 			puts("Bad Data Hash\n");
-			show_boot_progress(-125);
+			show_boot_error(125);
 			return 0;
 		}
 		puts("OK\n");
@@ -3188,7 +3188,7 @@
 	    !fit_image_check_type(fit, rd_noffset, IH_TYPE_RAMDISK)) {
 		printf("No Linux %s Ramdisk Image\n",
 				genimg_get_arch_name(arch));
-		show_boot_progress(-126);
+		show_boot_error(126);
 		return 0;
 	}
 
