From 5c8e5d2ef2e7bb734f209c97c847f756236a838d Mon Sep 17 00:00:00 2001 From: George Poulios Date: Mon, 5 May 2025 16:38:18 +0300 Subject: [PATCH] drivers/misc/optee.c: Close session on open error Signed-off-by: George Poulios --- drivers/misc/optee.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/drivers/misc/optee.c b/drivers/misc/optee.c index 095c969b76..6e0455074c 100644 --- a/drivers/misc/optee.c +++ b/drivers/misc/optee.c @@ -248,6 +248,17 @@ static int optee_from_msg_param(FAR struct tee_ioctl_param *params, return 0; } +static int optee_close_session(FAR struct optee_priv_data *priv, + uint32_t session) +{ + struct optee_msg_arg msg; + + memset(&msg, 0, sizeof(struct optee_msg_arg)); + msg.cmd = OPTEE_MSG_CMD_CLOSE_SESSION; + msg.session = session; + return optee_transport_call(priv, &msg); +} + static int optee_ioctl_open_session(FAR struct optee_priv_data *priv, FAR struct tee_ioctl_buf_data *buf) { @@ -318,6 +329,7 @@ static int optee_ioctl_open_session(FAR struct optee_priv_data *priv, msg->params + 2); if (ret < 0) { + optee_close_session(priv, msg->session); return ret; } @@ -393,13 +405,7 @@ static int optee_ioctl_close_session(FAR struct optee_priv_data *priv, FAR struct tee_ioctl_close_session_arg *arg) { - struct optee_msg_arg msg; - - memset(&msg, 0, sizeof(struct optee_msg_arg)); - msg.cmd = OPTEE_MSG_CMD_CLOSE_SESSION; - msg.session = arg->session; - msg.num_params = 0; - return optee_transport_call(priv, &msg); + return optee_close_session(priv, arg->session); } static int optee_ioctl_version(FAR struct tee_ioctl_version_data *vers)