[PATCH v14 4/6] firmware: imx: add driver for NXP EdgeLock Enclave
Pankaj Gupta
pankaj.gupta at nxp.com
Tue Apr 1 23:14:26 PDT 2025
>> diff --git a/drivers/firmware/imx/ele_common.c
...
>> + *
>> + * Return:
>> + * 0: if the input length is not 4 byte aligned, or num of words < 5.
>> + * chksum: calculated word by word.
>> + */
>> +u32 se_add_msg_chksum(u32 *msg, u32 msg_len) {
>> + u32 nb_words = msg_len / (u32)sizeof(u32);
>> + u32 chksum = 0;
>> + u32 i;
>> +
>> + if (nb_words < 5)
>> + return chksum;
For msg_length = 8 bytes or nb_words = 2, execution flow will never continue
after the above check.
>> +
>> + if (msg_len % SE_MSG_WORD_SZ) {
>> + pr_err("Msg-len is not 4-byte aligned.");
>> + return chksum;
>> + }
>> +
>> + for (i = 0; i < nb_words - 1; i++)
>> + chksum ^= *(msg + i);
> if msg_len is 8, nv_words is 2,
For msg_length = 8 bytes or nb_words = 2, execution flow will never here.
> Only first *(msg + 0) is calcucate, is it what your expected? If yes,
> need comments said why *(msg + 1) needn't calcuate.
Since msg_len also includes the 4 bytes (or 1word) to store the checksum
value. Hence, *(msg + 1) needn't be calcuated
Will add that as a comment.
>> +
>> + return chksum;
>> +}
>> +
>> +int ele_msg_rcv(struct se_if_priv *priv,
>> + struct se_clbk_handle *se_clbk_hdl) {
>> + int err = 0;
>> +
>> + do {
>> + err = wait_for_completion_interruptible(&se_clbk_hdl->done);
>> + if (err == -ERESTARTSYS) {
>> + if (priv->waiting_rsp_clbk_hdl.rx_msg) {
>> + priv->waiting_rsp_clbk_hdl.signal_rcvd =
true;
>> + continue;
> Is possible dead loop here?
No. it will be the same condition with or without continue.
- With using ctrl + c, in case of no response from FW, it will continue to
wait indefinitely. There will be no impact of using ctrl + c on this.
- Without using ctrl + c, in case of no response from FW, it will continue
to wait indefinitely,
So, this code leg was implemented to handle the scenario, where the FW is
always responsive and "ctrl + c", is pressed to stop an ongoing task.
It will gracefully exits after completing the full exchange.
>> + }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 11094 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20250402/6fbcf6f7/attachment.p7s>
More information about the linux-arm-kernel
mailing list