diff mbox series

[v2,03/17] android: boot: replace android_image_check_header

Message ID 20230126160506.1026643-4-souajih@baylibre.com
State Changes Requested
Delegated to: Simon Glass
Headers show
Series Support android boot image v3/v4 | expand

Commit Message

Safae Ouajih Jan. 26, 2023, 4:04 p.m. UTC
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, android_image_check_header() is
being replaced by is_android_boot_image_header() to only refer to
boot image header check.

Signed-off-by: Safae Ouajih <souajih@baylibre.com>
---
 boot/image-android.c      | 8 ++++----
 boot/image-board.c        | 2 +-
 cmd/abootimg.c            | 4 ++--
 drivers/fastboot/fb_mmc.c | 3 +--
 include/image.h           | 2 +-
 5 files changed, 9 insertions(+), 10 deletions(-)

Comments

Simon Glass Jan. 27, 2023, 12:54 a.m. UTC | #1
On Thu, 26 Jan 2023 at 09:05, Safae Ouajih <souajih@baylibre.com> wrote:
>
> 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, android_image_check_header() is
> being replaced by is_android_boot_image_header() to only refer to
> boot image header check.
>
> Signed-off-by: Safae Ouajih <souajih@baylibre.com>
> ---
>  boot/image-android.c      | 8 ++++----
>  boot/image-board.c        | 2 +-
>  cmd/abootimg.c            | 4 ++--
>  drivers/fastboot/fb_mmc.c | 3 +--
>  include/image.h           | 2 +-
>  5 files changed, 9 insertions(+), 10 deletions(-)
>

[..]

> diff --git a/include/image.h b/include/image.h
> index bcb24d92de..c1594ee169 100644
> --- a/include/image.h
> +++ b/include/image.h
> @@ -1735,7 +1735,6 @@ int fit_image_cipher_get_algo(const void *fit, int noffset, char **algo);
>  struct cipher_algo *image_get_cipher_algo(const char *full_name);
>
>  struct andr_boot_img_hdr_v0;
> -int android_image_check_header(const struct andr_boot_img_hdr_v0 *hdr);
>  int android_image_get_kernel(const struct andr_boot_img_hdr_v0 *hdr, int verify,
>                              ulong *os_data, ulong *os_len);
>  int android_image_get_ramdisk(const struct andr_boot_img_hdr_v0 *hdr,
> @@ -1750,6 +1749,7 @@ ulong android_image_get_kload(const struct andr_boot_img_hdr_v0 *hdr);
>  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);
>  bool android_image_print_dtb_contents(ulong hdr_addr);
> +bool is_android_boot_image_header(const struct andr_boot_img_hdr_v0 *hdr);

Please add a full comment

>
>  /**
>   * board_fit_config_name_match() - Check for a matching board name
> --
> 2.34.1
>

With that:

Reviewed-by: Simon Glass <sjg@chromium.org>

Regards,
SImon
Mattijs Korpershoek Feb. 1, 2023, 8:33 a.m. UTC | #2
On Thu, Jan 26, 2023 at 17:54, Simon Glass <sjg@chromium.org> wrote:

> On Thu, 26 Jan 2023 at 09:05, Safae Ouajih <souajih@baylibre.com> wrote:
>>
>> 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, android_image_check_header() is
>> being replaced by is_android_boot_image_header() to only refer to
>> boot image header check.
>>
>> Signed-off-by: Safae Ouajih <souajih@baylibre.com>
>> ---
>>  boot/image-android.c      | 8 ++++----
>>  boot/image-board.c        | 2 +-
>>  cmd/abootimg.c            | 4 ++--
>>  drivers/fastboot/fb_mmc.c | 3 +--
>>  include/image.h           | 2 +-
>>  5 files changed, 9 insertions(+), 10 deletions(-)
>>
>
> [..]
>
>> diff --git a/include/image.h b/include/image.h
>> index bcb24d92de..c1594ee169 100644
>> --- a/include/image.h
>> +++ b/include/image.h
>> @@ -1735,7 +1735,6 @@ int fit_image_cipher_get_algo(const void *fit, int noffset, char **algo);
>>  struct cipher_algo *image_get_cipher_algo(const char *full_name);
>>
>>  struct andr_boot_img_hdr_v0;
>> -int android_image_check_header(const struct andr_boot_img_hdr_v0 *hdr);
>>  int android_image_get_kernel(const struct andr_boot_img_hdr_v0 *hdr, int verify,
>>                              ulong *os_data, ulong *os_len);
>>  int android_image_get_ramdisk(const struct andr_boot_img_hdr_v0 *hdr,
>> @@ -1750,6 +1749,7 @@ ulong android_image_get_kload(const struct andr_boot_img_hdr_v0 *hdr);
>>  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);
>>  bool android_image_print_dtb_contents(ulong hdr_addr);
>> +bool is_android_boot_image_header(const struct andr_boot_img_hdr_v0 *hdr);
>
> Please add a full comment
>
>>
>>  /**
>>   * board_fit_config_name_match() - Check for a matching board name
>> --
>> 2.34.1
>>
>
> With that:
>
> Reviewed-by: Simon Glass <sjg@chromium.org>
>
> Regards,
> SImon

Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
diff mbox series

Patch

diff --git a/boot/image-android.c b/boot/image-android.c
index 8c0a304cc0..ed51e8b47e 100644
--- a/boot/image-android.c
+++ b/boot/image-android.c
@@ -122,9 +122,9 @@  int android_image_get_kernel(const struct andr_boot_img_hdr_v0 *hdr, int verify,
 	return 0;
 }
 
-int android_image_check_header(const struct andr_boot_img_hdr_v0 *hdr)
+bool is_android_boot_image_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)
@@ -231,7 +231,7 @@  bool android_image_get_dtbo(ulong hdr_addr, ulong *addr, u32 *size)
 	bool ret = true;
 
 	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");
 		ret = false;
 		goto exit;
@@ -280,7 +280,7 @@  static bool android_image_get_dtb_img_addr(ulong hdr_addr, ulong *addr)
 	bool ret = true;
 
 	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");
 		ret = false;
 		goto exit;
diff --git a/boot/image-board.c b/boot/image-board.c
index e5d71a3d54..9295b6d0c8 100644
--- a/boot/image-board.c
+++ b/boot/image-board.c
@@ -284,7 +284,7 @@  int genimg_get_format(const void *img_addr)
 			return IMAGE_FORMAT_FIT;
 	}
 	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_INVALID;
diff --git a/cmd/abootimg.c b/cmd/abootimg.c
index 026c03f91c..b5cfb141ef 100644
--- a/cmd/abootimg.c
+++ b/cmd/abootimg.c
@@ -26,7 +26,7 @@  static int abootimg_get_ver(int argc, char *const argv[])
 		return CMD_RET_USAGE;
 
 	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");
 		res = CMD_RET_FAILURE;
 		goto exit;
@@ -73,7 +73,7 @@  static int abootimg_get_dtb_load_addr(int argc, char *const argv[])
 		return CMD_RET_USAGE;
 
 	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");
 		res = CMD_RET_FAILURE;
 		goto exit;
diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
index 6d0112fdf4..086e5f7843 100644
--- a/drivers/fastboot/fb_mmc.c
+++ b/drivers/fastboot/fb_mmc.c
@@ -313,8 +313,7 @@  static lbaint_t fb_mmc_get_boot_header(struct blk_desc *dev_desc,
 	}
 
 	/* Check boot header magic string */
-	res = android_image_check_header(hdr);
-	if (res != 0) {
+	if (!is_android_boot_image_header(hdr)) {
 		pr_err("bad boot image magic\n");
 		fastboot_fail("boot partition not initialized", response);
 		return 0;
diff --git a/include/image.h b/include/image.h
index bcb24d92de..c1594ee169 100644
--- a/include/image.h
+++ b/include/image.h
@@ -1735,7 +1735,6 @@  int fit_image_cipher_get_algo(const void *fit, int noffset, char **algo);
 struct cipher_algo *image_get_cipher_algo(const char *full_name);
 
 struct andr_boot_img_hdr_v0;
-int android_image_check_header(const struct andr_boot_img_hdr_v0 *hdr);
 int android_image_get_kernel(const struct andr_boot_img_hdr_v0 *hdr, int verify,
 			     ulong *os_data, ulong *os_len);
 int android_image_get_ramdisk(const struct andr_boot_img_hdr_v0 *hdr,
@@ -1750,6 +1749,7 @@  ulong android_image_get_kload(const struct andr_boot_img_hdr_v0 *hdr);
 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);
 bool android_image_print_dtb_contents(ulong hdr_addr);
+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