[PATCH 2/7] firmware: imx: ele: Correct ele_fw_authenticate API

From: Peng Fan (OSS)

Date: Mon May 25 2026 - 01:37:33 EST


From: Peng Fan <peng.fan@xxxxxxx>

The command format is as:
0(32bits): Header
1(32bits): Address of the container header
2(32bits): Reserved for future
3(32bits): Actual address of the container header

Correct the data field to only use lower 32bits. If upper 32bits are
not zero, fail the command.

Fixes: 106ffe5d78ad8 ("firmware: imx: add driver for NXP EdgeLock Enclave")
Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
---
drivers/firmware/imx/ele_base_msg.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/firmware/imx/ele_base_msg.c b/drivers/firmware/imx/ele_base_msg.c
index 23f68076b85ce3ac0293bb98e39310e20834f7db..f6346f15450963b9dd8d2df7d3e6b2ce6b4602ce 100644
--- a/drivers/firmware/imx/ele_base_msg.c
+++ b/drivers/firmware/imx/ele_base_msg.c
@@ -208,6 +208,11 @@ int ele_fw_authenticate(struct se_if_priv *priv, phys_addr_t contnr_addr,
if (!priv)
return -EINVAL;

+ if (upper_32_bits(contnr_addr) || upper_32_bits(img_addr)) {
+ dev_err(priv->dev, "Wrong address: %pap %pap\n", &contnr_addr, &img_addr);
+ return -EINVAL;
+ }
+
struct se_api_msg *tx_msg __free(kfree) =
kzalloc(ELE_FW_AUTH_REQ_SZ, GFP_KERNEL);
if (!tx_msg)
@@ -224,8 +229,8 @@ int ele_fw_authenticate(struct se_if_priv *priv, phys_addr_t contnr_addr,
return ret;

tx_msg->data[0] = lower_32_bits(contnr_addr);
- tx_msg->data[1] = upper_32_bits(contnr_addr);
- tx_msg->data[2] = img_addr;
+ tx_msg->data[1] = 0;
+ tx_msg->data[2] = lower_32_bits(img_addr);

ret = ele_msg_send_rcv(priv->priv_dev_ctx, tx_msg, ELE_FW_AUTH_REQ_SZ, rx_msg,
ELE_FW_AUTH_RSP_MSG_SZ);

--
2.37.1