refactor: simplify function "api_release_mailbox"
Simplify the fucntion api_release_mailbox, which was a
looking a bit spaguetti.
Signed-off-by: J-Alves <joao.alves@arm.com>
Change-Id: I68b74402e469b84419e3c659231898b70452a3bf
diff --git a/src/api.c b/src/api.c
index 558d093..f7a39a1 100644
--- a/src/api.c
+++ b/src/api.c
@@ -919,13 +919,12 @@
{
ffa_vm_id_t vm_id = vm_locked.vm->id;
int32_t error_code_to_ret = 0;
- bool ret = false;
switch (vm_locked.vm->mailbox.state) {
case MAILBOX_STATE_EMPTY:
dlog_verbose("Mailbox of %x is empty.\n", vm_id);
error_code_to_ret = FFA_DENIED;
- goto out;
+ break;
case MAILBOX_STATE_FULL:
/* Check it doesn't have pending RX full notifications. */
if (vm_are_fwk_notifications_pending(vm_locked)) {
@@ -934,7 +933,6 @@
"messages.\n",
vm_id);
error_code_to_ret = FFA_DENIED;
- goto out;
}
break;
case MAILBOX_STATE_OTHER_WORLD_OWNED:
@@ -949,19 +947,20 @@
"Mailbox of endpoint %x in a wrongful state.\n",
vm_id);
error_code_to_ret = FFA_ABORTED;
- goto out;
}
break;
}
- vm_locked.vm->mailbox.state = MAILBOX_STATE_EMPTY;
- ret = true;
-out:
- if (error_code != NULL) {
- *error_code = error_code_to_ret;
+ if (error_code_to_ret != 0) {
+ if (error_code != NULL) {
+ *error_code = error_code_to_ret;
+ }
+ return false;
}
- return ret;
+ vm_locked.vm->mailbox.state = MAILBOX_STATE_EMPTY;
+
+ return true;
}
struct ffa_value api_ffa_msg_wait(struct vcpu *current, struct vcpu **next,