Commit d1515ca9cd5dc982743ab2a8822a3c834fb2eeb6

Authored by Breno Lima
Committed by Ye Li
1 parent 822252fdc1

MLK-21389 imx: hab: Check if IVT header is HABv4

The HABv4 implementation in ROM checks if HAB major version
in IVT header is 4.x.

The current implementation in hab.c code is only validating
HAB v4.0 and HAB v4.1 and may be incompatible with newer
HABv4 versions.

Modify verify_ivt_header() function to align with HABv4
implementation in ROM code.

Signed-off-by: Breno Lima <breno.lima@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
(cherry picked from commit 33f51b401dffa393274a28f9d49a87af3eb02fe0)

Showing 2 changed files with 1 additions and 4 deletions Side-by-side Diff

arch/arm/include/asm/mach-imx/hab.h
... ... @@ -19,8 +19,6 @@
19 19 */
20 20 #define IVT_HEADER_MAGIC 0xD1
21 21 #define IVT_TOTAL_LENGTH 0x20
22   -#define IVT_HEADER_V1 0x40
23   -#define IVT_HEADER_V2 0x41
24 22  
25 23 struct __packed ivt_header {
26 24 uint8_t magic;
arch/arm/mach-imx/hab.c
... ... @@ -47,8 +47,7 @@
47 47 if (be16_to_cpu(ivt_hdr->length) != IVT_TOTAL_LENGTH)
48 48 result = ivt_header_error("bad length", ivt_hdr);
49 49  
50   - if (ivt_hdr->version != IVT_HEADER_V1 &&
51   - ivt_hdr->version != IVT_HEADER_V2)
  50 + if ((ivt_hdr->version & HAB_MAJ_MASK) != HAB_MAJ_VER)
52 51 result = ivt_header_error("bad version", ivt_hdr);
53 52  
54 53 return result;