From 59fff91f2bea2215c7b16415b9a0e6714fac5573 Mon Sep 17 00:00:00 2001 From: Seung-Woo Kim Date: Thu, 1 Aug 2024 10:01:00 +0900 Subject: tools: imagetool: Remove unnecessary check from toc0_verify_cert_item() C99 introduced the possibility to mark function parameters declared as arrays with an extra keyword "static": void foo(uint8_t digest[static SHA256_DIGEST_LENGTH]); This requires the respective function argument to be at least as large as specified. Passing in random pointers (like NULL) then becomes undefined behaviour, and compilers warn about this. Newer GCC compilers (starting with GCC 14) will also automatically mark those parameters as "nonnull", and thus warn if a (redundant) NULL check is done inside the function: tools/sunxi_toc0.o tools/sunxi_toc0.c tools/sunxi_toc0.c: In function 'toc0_verify_cert_item': tools/sunxi_toc0.c:447:12: warning: 'nonnull' argument 'digest' compared to NULL [-Wnonnull-compare] 447 | if (digest && memcmp(&extension->digest, digest, SHA256_DIGEST_LENGTH)) { | ^ Remove the unnecessary NULL check from toc0_verify_cert_item(), to avoid the warning. Signed-off-by: Seung-Woo Kim Reviewed-by: Andre Przywara [Andre: extend commit message] Signed-off-by: Andre Przywara --- tools/sunxi_toc0.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/sunxi_toc0.c b/tools/sunxi_toc0.c index 292649fe90f..76693647a09 100644 --- a/tools/sunxi_toc0.c +++ b/tools/sunxi_toc0.c @@ -444,7 +444,7 @@ static int toc0_verify_cert_item(const uint8_t *buf, uint32_t len, RSA *fw_key, /* If a digest was provided, compare it to the embedded digest. */ extension = &totalSequence->mainSequence.explicit3.extension; - if (digest && memcmp(&extension->digest, digest, SHA256_DIGEST_LENGTH)) { + if (memcmp(&extension->digest, digest, SHA256_DIGEST_LENGTH)) { pr_err("Wrong firmware digest in certificate\n"); goto err; } -- cgit v1.3.1 From 1e0b91d6fc07557faef0f458a3095b67c4557c50 Mon Sep 17 00:00:00 2001 From: Gary Bisson Date: Mon, 5 Aug 2024 23:25:07 +0200 Subject: tools: imx8image: fix soc variable for ULP Currently the ULP token sets the soc as IMX9, making it impossible to differentiate the two families of processors. However, since the 8ULP requires specific binaries like upower which do not exist in 93, they need to be separated. Fixes: 6ec65c8558f (tools: image: support i.MX93) Signed-off-by: Gary Bisson Reviewed-by: Peng Fan --- tools/imx8image.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/imx8image.c b/tools/imx8image.c index 76d0cd62dcc..53ab16637ba 100644 --- a/tools/imx8image.c +++ b/tools/imx8image.c @@ -119,7 +119,7 @@ static void parse_cfg_cmd(image_t *param_stack, int32_t cmd, char *token, } else if (!strncmp(token, "IMX8QM", 6)) { soc = QM; } else if (!strncmp(token, "ULP", 3)) { - soc = IMX9; + soc = ULP; } else if (!strncmp(token, "IMX9", 4)) { soc = IMX9; } else { -- cgit v1.3.1 From 68a431e6386a2e31137324f49fd3081e57fed31a Mon Sep 17 00:00:00 2001 From: Gary Bisson Date: Mon, 5 Aug 2024 23:25:08 +0200 Subject: tools: imx8image: add upower image support Part of the upower management was included in a previous commit [1]. This patch only adds the bits required to properly parse a config file that would include the binary as follows: IMAGE PWR upower.bin [1] 6ec65c8558f (tools: image: support i.MX93) Signed-off-by: Gary Bisson Reviewed-by: Peng Fan --- include/imx8image.h | 1 + tools/imx8image.c | 5 +++++ 2 files changed, 6 insertions(+) (limited to 'tools') diff --git a/include/imx8image.h b/include/imx8image.h index 32064bfeeb8..85fb642ae39 100644 --- a/include/imx8image.h +++ b/include/imx8image.h @@ -162,6 +162,7 @@ enum imx8image_cmd { enum imx8image_core_type { CFG_CORE_INVALID, CFG_SCU, + CFG_PWR, CFG_M40, CFG_M41, CFG_A35, diff --git a/tools/imx8image.c b/tools/imx8image.c index 53ab16637ba..5eb4b9612c8 100644 --- a/tools/imx8image.c +++ b/tools/imx8image.c @@ -57,6 +57,7 @@ static table_entry_t imx8image_cmds[] = { static table_entry_t imx8image_core_entries[] = { {CFG_SCU, "SCU", "scu core", }, + {CFG_PWR, "PWR", "uPower core", }, {CFG_M40, "M40", "M4 core 0", }, {CFG_M41, "M41", "M4 core 1", }, {CFG_A35, "A35", "A35 core", }, @@ -181,6 +182,10 @@ static void parse_cfg_fld(image_t *param_stack, int32_t *cmd, char *token, param_stack[p_idx].option = SCFW; param_stack[p_idx++].filename = token; break; + case CFG_PWR: + param_stack[p_idx].option = UPOWER; + param_stack[p_idx++].filename = token; + break; case CFG_M40: param_stack[p_idx].option = M40; param_stack[p_idx].ext = 0; -- cgit v1.3.1