android: boot: replace android_image_check_header
With the new vendor boot image introduced in versions 3 and 4 of boot image header, the header check must be done for both boot image and vendor boot image. Thus, replace android_image_check_header() by is_android_boot_image_header() to only refer to boot image header check. Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
This commit is contained in:
parent
86b62947eb
commit
734cb47d6d
5 changed files with 19 additions and 29 deletions
|
@ -122,18 +122,9 @@ int android_image_get_kernel(const struct andr_boot_img_hdr_v0 *hdr, int verify,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
bool is_android_boot_image_header(const struct andr_boot_img_hdr_v0 *hdr)
|
||||||
* android_image_check_header() - Check the magic of boot image
|
|
||||||
*
|
|
||||||
* This checks the header of Android boot image and verifies the
|
|
||||||
* magic is "ANDROID!"
|
|
||||||
*
|
|
||||||
* @hdr: Pointer to boot image
|
|
||||||
* Return: 0 if the magic is correct, non-zero if there is a magic mismatch
|
|
||||||
*/
|
|
||||||
int android_image_check_header(const struct andr_boot_img_hdr_v0 *hdr)
|
|
||||||
{
|
{
|
||||||
return memcmp(ANDR_BOOT_MAGIC, hdr->magic, ANDR_BOOT_MAGIC_SIZE);
|
return !memcmp(ANDR_BOOT_MAGIC, hdr, ANDR_BOOT_MAGIC_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ulong android_image_get_end(const struct andr_boot_img_hdr_v0 *hdr)
|
ulong android_image_get_end(const struct andr_boot_img_hdr_v0 *hdr)
|
||||||
|
@ -240,7 +231,7 @@ bool android_image_get_dtbo(ulong hdr_addr, ulong *addr, u32 *size)
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
|
||||||
hdr = map_sysmem(hdr_addr, sizeof(*hdr));
|
hdr = map_sysmem(hdr_addr, sizeof(*hdr));
|
||||||
if (android_image_check_header(hdr)) {
|
if (!is_android_boot_image_header(hdr)) {
|
||||||
printf("Error: Boot Image header is incorrect\n");
|
printf("Error: Boot Image header is incorrect\n");
|
||||||
ret = false;
|
ret = false;
|
||||||
goto exit;
|
goto exit;
|
||||||
|
@ -289,7 +280,7 @@ static bool android_image_get_dtb_img_addr(ulong hdr_addr, ulong *addr)
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
|
||||||
hdr = map_sysmem(hdr_addr, sizeof(*hdr));
|
hdr = map_sysmem(hdr_addr, sizeof(*hdr));
|
||||||
if (android_image_check_header(hdr)) {
|
if (!is_android_boot_image_header(hdr)) {
|
||||||
printf("Error: Boot Image header is incorrect\n");
|
printf("Error: Boot Image header is incorrect\n");
|
||||||
ret = false;
|
ret = false;
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
|
@ -284,7 +284,7 @@ int genimg_get_format(const void *img_addr)
|
||||||
return IMAGE_FORMAT_FIT;
|
return IMAGE_FORMAT_FIT;
|
||||||
}
|
}
|
||||||
if (IS_ENABLED(CONFIG_ANDROID_BOOT_IMAGE) &&
|
if (IS_ENABLED(CONFIG_ANDROID_BOOT_IMAGE) &&
|
||||||
!android_image_check_header(img_addr))
|
is_android_boot_image_header(img_addr))
|
||||||
return IMAGE_FORMAT_ANDROID;
|
return IMAGE_FORMAT_ANDROID;
|
||||||
|
|
||||||
return IMAGE_FORMAT_INVALID;
|
return IMAGE_FORMAT_INVALID;
|
||||||
|
|
|
@ -26,7 +26,7 @@ static int abootimg_get_ver(int argc, char *const argv[])
|
||||||
return CMD_RET_USAGE;
|
return CMD_RET_USAGE;
|
||||||
|
|
||||||
hdr = map_sysmem(abootimg_addr(), sizeof(*hdr));
|
hdr = map_sysmem(abootimg_addr(), sizeof(*hdr));
|
||||||
if (android_image_check_header(hdr)) {
|
if (!is_android_boot_image_header(hdr)) {
|
||||||
printf("Error: Boot Image header is incorrect\n");
|
printf("Error: Boot Image header is incorrect\n");
|
||||||
res = CMD_RET_FAILURE;
|
res = CMD_RET_FAILURE;
|
||||||
goto exit;
|
goto exit;
|
||||||
|
@ -73,7 +73,7 @@ static int abootimg_get_dtb_load_addr(int argc, char *const argv[])
|
||||||
return CMD_RET_USAGE;
|
return CMD_RET_USAGE;
|
||||||
|
|
||||||
hdr = map_sysmem(abootimg_addr(), sizeof(*hdr));
|
hdr = map_sysmem(abootimg_addr(), sizeof(*hdr));
|
||||||
if (android_image_check_header(hdr)) {
|
if (!is_android_boot_image_header(hdr)) {
|
||||||
printf("Error: Boot Image header is incorrect\n");
|
printf("Error: Boot Image header is incorrect\n");
|
||||||
res = CMD_RET_FAILURE;
|
res = CMD_RET_FAILURE;
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
|
@ -313,8 +313,7 @@ static lbaint_t fb_mmc_get_boot_header(struct blk_desc *dev_desc,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check boot header magic string */
|
/* Check boot header magic string */
|
||||||
res = android_image_check_header(hdr);
|
if (!is_android_boot_image_header(hdr)) {
|
||||||
if (res != 0) {
|
|
||||||
pr_err("bad boot image magic\n");
|
pr_err("bad boot image magic\n");
|
||||||
fastboot_fail("boot partition not initialized", response);
|
fastboot_fail("boot partition not initialized", response);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1736,17 +1736,6 @@ struct cipher_algo *image_get_cipher_algo(const char *full_name);
|
||||||
|
|
||||||
struct andr_boot_img_hdr_v0;
|
struct andr_boot_img_hdr_v0;
|
||||||
|
|
||||||
/**
|
|
||||||
* android_image_check_header() - Check the magic of boot image
|
|
||||||
*
|
|
||||||
* This checks the header of Android boot image and verifies the
|
|
||||||
* magic is "ANDROID!"
|
|
||||||
*
|
|
||||||
* @hdr: Pointer to image header
|
|
||||||
* Return: 0 if the magic is correct, non-zero if there is a magic mismatch
|
|
||||||
*/
|
|
||||||
int android_image_check_header(const struct andr_boot_img_hdr_v0 *hdr);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* android_image_get_kernel() - Processes kernel part of Android boot images
|
* android_image_get_kernel() - Processes kernel part of Android boot images
|
||||||
*
|
*
|
||||||
|
@ -1838,6 +1827,17 @@ ulong android_image_get_kcomp(const struct andr_boot_img_hdr_v0 *hdr);
|
||||||
void android_print_contents(const struct andr_boot_img_hdr_v0 *hdr);
|
void android_print_contents(const struct andr_boot_img_hdr_v0 *hdr);
|
||||||
bool android_image_print_dtb_contents(ulong hdr_addr);
|
bool android_image_print_dtb_contents(ulong hdr_addr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* is_android_boot_image_header() - Check the magic of boot image
|
||||||
|
*
|
||||||
|
* This checks the header of Android boot image and verifies the
|
||||||
|
* magic is "ANDROID!"
|
||||||
|
*
|
||||||
|
* @hdr: Pointer to boot image
|
||||||
|
* Return: non-zero if the magic is correct, zero otherwise
|
||||||
|
*/
|
||||||
|
bool is_android_boot_image_header(const struct andr_boot_img_hdr_v0 *hdr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* board_fit_config_name_match() - Check for a matching board name
|
* board_fit_config_name_match() - Check for a matching board name
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue