diff options
-rw-r--r-- | services/std_svc/spm/spmc/spmc_main.c | 2 | ||||
-rw-r--r-- | services/std_svc/spm/spmc/spmc_shared_mem.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/services/std_svc/spm/spmc/spmc_main.c b/services/std_svc/spm/spmc/spmc_main.c index ccfe619a4..a00ddf541 100644 --- a/services/std_svc/spm/spmc/spmc_main.c +++ b/services/std_svc/spm/spmc/spmc_main.c @@ -210,6 +210,7 @@ static uint64_t partition_info_get_handler(uint32_t smc_fid, spin_lock(&mbox->lock); if (mbox->state != MAILBOX_STATE_EMPTY) { + spin_unlock(&mbox->lock); return spmc_ffa_error_return(handle, FFA_ERROR_BUSY); } mbox->state = MAILBOX_STATE_FULL; @@ -739,6 +740,7 @@ static uint64_t rx_release_handler(uint32_t smc_fid, spin_lock(&mbox->lock); if (mbox->state != MAILBOX_STATE_FULL) { + spin_unlock(&mbox->lock); return spmc_ffa_error_return(handle, FFA_ERROR_DENIED); } mbox->state = MAILBOX_STATE_EMPTY; diff --git a/services/std_svc/spm/spmc/spmc_shared_mem.c b/services/std_svc/spm/spmc/spmc_shared_mem.c index 69e345dbc..2f7f45b5e 100644 --- a/services/std_svc/spm/spmc/spmc_shared_mem.c +++ b/services/std_svc/spm/spmc/spmc_shared_mem.c @@ -491,6 +491,7 @@ spmc_ffa_mem_retrieve_req(uint32_t smc_fid, spin_lock(&mbox->lock); if (mbox->state != MAILBOX_STATE_EMPTY) { + spin_unlock(&mbox->lock); WARN("%s: RX Buffer is full! \n", __func__); return spmc_ffa_error_return(handle, FFA_ERROR_DENIED); } @@ -643,6 +644,7 @@ long spmc_ffa_mem_frag_rx(uint32_t smc_fid, spin_lock(&mbox->lock); if (mbox->state != MAILBOX_STATE_EMPTY) { + spin_unlock(&mbox->lock); WARN("%s: RX Buffer is full! \n", __func__); return spmc_ffa_error_return(handle, FFA_ERROR_DENIED); } |