tee: change return code for REE FS supplicant cmd
Subsystems (2)
PATCH 1/1 tee: change return code for REE FS supplicant cmd
If OP-TEE core is compiled with support of REE FS and RPMB at the same time (CFG_RPMB_FS ?= y; CFG_RPMB_FS ?= y), and persistent storage API is used with TEE_STORAGE_PRIVATE storage id, it will lead to TA panic.
E/TC:? 0 TA panicked with code 0xffff0009
.....
E/TC:? 0 Call stack:
E/TC:? 0 0x000000004002f2f8 TEE_OpenPersistentObject at lib/libutee/tee_api_objects.c:422
In this particular case TEE_ERROR_STORAGE_NOT_AVAILABLE is more suitable than TEE_ERROR_NOT_IMPLEMENTED, as it provides to a TA a possibility to handle this error code [1].
From GPD TEE Internal Core specification [2]:TEE_ERROR_STORAGE_NOT_AVAILABLE - if the persistent object is stored in a storage area which is currently inaccessible. It may be associated with the device but unplugged, busy, or inaccessible for some other reason.
[1]: https://github.com/OP-TEE/optee_os/blob/94db01ef448d1e552161c2d861d57a5f8bda0cc0/lib/libutee/tee_api_objects.c#L419
[2]: https://globalplatform.org/wp-content/uploads/2018/06/GPD_TEE_Internal_Core_API_Specification_v1.1.2.50_PublicReview.pdf
--- drivers/tee/optee/supplicant.c | 4 ++-- include/tee.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-)
drivers/tee/optee/supplicant.c +2 -2
@@ -82,8 +82,8 @@ void optee_suppl_cmd(struct udevice *dev, struct tee_shm *shm_arg,cmd_shm_free (arg);break ;case OPTEE_MSG_RPC_CMD_FS : -debug ("OPTEE_MSG_RPC_CMD_FS not implemented\n" ); - arg->ret =TEE_ERROR_NOT_IMPLEMENTED ; +debug ("REE FS storage isn't available\n" ); + arg->ret =TEE_ERROR_STORAGE_NOT_AVAILABLE ;break ;case OPTEE_MSG_RPC_CMD_RPMB :optee_suppl_cmd_rpmb (dev, arg);
include/tee.h +1 -0
@@ -34,6 +34,7 @@* struct tee_version_data::gen_caps */ #define TEE_SUCCESS 0x00000000 +#define TEE_ERROR_STORAGE_NOT_AVAILABLE 0xf0100003#define TEE_ERROR_GENERIC 0xffff0000#define TEE_ERROR_BAD_PARAMETERS 0xffff0006#define TEE_ERROR_ITEM_NOT_FOUND 0xffff0008
Signature · 1 line
2.7.4
PATCH 1/1 tee: change return code for REE FS supplicant cmd
Quoted 58 lines · Igor Opaniuk
If OP-TEE core is compiled with support of REE FS and RPMB at the same time (
CFG_RPMB_FS?= y;CFG_RPMB_FS?= y), and persistent storage API is used withTEE_STORAGE_PRIVATEstorage id, it will lead to TA panic.E/TC:? 0 TA panicked with code
0xffff0009
.....
E/TC:? 0 Call stack:
E/TC:? 00x000000004002f2f8TEE_OpenPersistentObjectatlib/libutee/tee_api_objects.c:422In this particular case
TEE_ERROR_STORAGE_NOT_AVAILABLEis more suitable thanTEE_ERROR_NOT_IMPLEMENTED, as it provides to a TA a possibility to handle this error code [1].From GPD TEE Internal Core specification [2]:
TEE_ERROR_STORAGE_NOT_AVAILABLE- if the persistent object is stored in a storage area which is currently inaccessible. It may be associated with the device but unplugged, busy, or inaccessible for some other reason.[1]: https://github.com/OP-TEE/optee_os/blob/94db01ef448d1e552161c2d861d57a5f8bda0cc0/lib/libutee/tee_api_objects.c#L419
[2]: https://globalplatform.org/wp-content/uploads/2018/06/GPD_TEE_Internal_Core_API_Specification_v1.1.2.50_PublicReview.pdfSigned-off-by Igor Opaniuk <[email protected]>--- drivers/tee/optee/supplicant.c | 4 ++-- include/tee.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-)drivers/tee/optee/supplicant.c +2
-2@@ -82,8 +82,8 @@ void optee_suppl_cmd(struct udevice *dev, struct tee_shm *shm_arg,cmd_shm_free (arg);break ;case OPTEE_MSG_RPC_CMD_FS : -debug ("OPTEE_MSG_RPC_CMD_FS not implemented\n" ); - arg->ret =TEE_ERROR_NOT_IMPLEMENTED ; +debug ("REE FS storage isn't available\n" ); + arg->ret =TEE_ERROR_STORAGE_NOT_AVAILABLE ;break ;case OPTEE_MSG_RPC_CMD_RPMB :optee_suppl_cmd_rpmb (dev, arg);include/tee.h +1
-1@@ -34,6 +34,7 @@* struct tee_version_data::gen_caps */ #define TEE_SUCCESS 0x00000000 +#define TEE_ERROR_STORAGE_NOT_AVAILABLE 0xf0100003#define TEE_ERROR_GENERIC 0xffff0000#define TEE_ERROR_BAD_PARAMETERS 0xffff0006#define TEE_ERROR_ITEM_NOT_FOUND 0xffff0008 --
Quoted 2 lines
2.7.4
Looks good to me:
Thanks,
Jens
PATCH 1/1 tee: change return code for REE FS supplicant cmd
In reply to Igor OpaniukQuoted 20 lines · Igor Opaniuk
If OP-TEE core is compiled with support of REE FS and RPMB at the same time (
CFG_RPMB_FS?= y;CFG_RPMB_FS?= y), and persistent storage API is used withTEE_STORAGE_PRIVATEstorage id, it will lead to TA panic.E/TC:? 0 TA panicked with code
0xffff0009
.....
E/TC:? 0 Call stack:
E/TC:? 00x000000004002f2f8TEE_OpenPersistentObjectatlib/libutee/tee_api_objects.c:422In this particular case
TEE_ERROR_STORAGE_NOT_AVAILABLEis more suitable thanTEE_ERROR_NOT_IMPLEMENTED, as it provides to a TA a possibility to handle this error code [1].Quoted 1 line
From GPD TEE Internal Core specification [2]:
TEE_ERROR_STORAGE_NOT_AVAILABLE- if the persistent object is stored in a storage area which is currently inaccessible. It may be associated with the device but unplugged, busy, or inaccessible for some other reason.
Quoted 5 lines
[1]: https://github.com/OP-TEE/optee_os/blob/94db01ef448d1e552161c2d861d57a5f8bda0cc0/lib/libutee/tee_api_objects.c#L419
[2]: https://globalplatform.org/wp-content/uploads/2018/06/GPD_TEE_Internal_Core_API_Specification_v1.1.2.50_PublicReview.pdfSigned-off-by Igor Opaniuk <[email protected]>Reviewed-by Jens Wiklander <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181217/424441ad/attachment.sig>