gpt: check alternate_lba valid [1/1]

PD#SWPL-157700

Problem:
check alternate_lba valid

Solution:
check alternate_lba valid
if not, reset it

Verify:
local

Change-Id: I2d7b74d3e2870cd25b0bd8f12d24ee9ea5d378a7
Signed-off-by: Xindong Xu <xindong.xu@amlogic.com>
diff --git a/disk/part_efi.c b/disk/part_efi.c
index deb0d19..233c4cd 100644
--- a/disk/part_efi.c
+++ b/disk/part_efi.c
@@ -1002,7 +1002,7 @@
 	if (le64_to_cpu(gpt_h->alternate_lba) > dev_desc->lba ||
 		le64_to_cpu(gpt_h->alternate_lba) == 0) {
 		printf("GPT: alternate_lba: %llX, " LBAF ", reset it\n",
-		       le64_to_cpu(gpt_h->last_usable_lba), dev_desc->lba);
+		       le64_to_cpu(gpt_h->alternate_lba), dev_desc->lba);
 		gpt_h->alternate_lba = cpu_to_le64(dev_desc->lba - 1);
 		flag = true;
 		alternate_flag = true;
@@ -1037,6 +1037,13 @@
 			printf("gpt_e[%d].ending_lba: %llX \n", i, gpt_e[i].ending_lba);
 			flag = true;
 		}
+
+		if (le64_to_cpu(gpt_h->alternate_lba) > le64_to_cpu(gpt_e[i].starting_lba) &&
+			le64_to_cpu(gpt_h->alternate_lba) < le64_to_cpu(gpt_e[i].ending_lba)) {
+			printf("%s: alternate_lba: %llX during part %d, invalid, reset it\n",
+				__func__, le64_to_cpu(gpt_h->alternate_lba), i);
+			gpt_h->alternate_lba = gpt_e[1].starting_lba - 1;
+		}
 	}
 
 	if (flag) {