mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 09:54:35 +00:00
efi_loader: Check for the native OP-TEE result on mm_communicate calls
Currently we only check for the return value of tee_invoke_func().
Although OP-TEE and StMM will correctly set param[1].u.value.a and we'll
eventually return an error, the correct thing to do is check for the
OP_TEE return code as well.
So let's check for that and move tee_shm_free() and tee_close_session()
before exiting with an error to make sure we always clear the registered
memory.
Fixes: f042e47e8f
("efi_loader: Implement EFI variable handling via OP-TEE")
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Use EFI_DEVICE_ERROR for TEE communication problems.
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
5d1f79ba43
commit
9b87d4429c
1 changed files with 2 additions and 2 deletions
|
@ -100,10 +100,10 @@ static efi_status_t optee_mm_communicate(void *comm_buf, ulong dsize)
|
|||
param[1].attr = TEE_PARAM_ATTR_TYPE_VALUE_OUTPUT;
|
||||
|
||||
rc = tee_invoke_func(conn.tee, &arg, 2, param);
|
||||
if (rc)
|
||||
return EFI_INVALID_PARAMETER;
|
||||
tee_shm_free(shm);
|
||||
tee_close_session(conn.tee, conn.session);
|
||||
if (rc || arg.ret != TEE_SUCCESS)
|
||||
return EFI_DEVICE_ERROR;
|
||||
|
||||
switch (param[1].u.value.a) {
|
||||
case ARM_SVC_SPM_RET_SUCCESS:
|
||||
|
|
Loading…
Add table
Reference in a new issue