From e94acaa6409e61c377c0e58cf0ae47455c74c42b Mon Sep 17 00:00:00 2001
From: Francisco Javier Trujillo Mata <fjtrujy@gmail.com>
Date: Fri, 10 Jan 2025 22:51:06 +0100
Subject: [PATCH] Delete semaphore on E_SIF_PKT_SEND error

---
 ee/kernel/src/sifrpc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/ee/kernel/src/sifrpc.c b/ee/kernel/src/sifrpc.c
index 5324227895c..9ac33c73628 100644
--- a/ee/kernel/src/sifrpc.c
+++ b/ee/kernel/src/sifrpc.c
@@ -148,6 +148,7 @@ int SifBindRpc(SifRpcClientData_t *cd, int sid, int mode)
 
     if (!SifSendCmd(SIF_CMD_RPC_BIND, bind, RPC_PACKET_SIZE, NULL, NULL, 0)) {
         rpc_packet_free(bind);
+        DeleteSema(cd->hdr.sema_id);
         return -E_SIF_PKT_SEND;
     }
 
@@ -214,6 +215,7 @@ int SifCallRpc(SifRpcClientData_t *cd, int rpc_number, int mode,
 
     if (!SifSendCmd(SIF_CMD_RPC_CALL, call, RPC_PACKET_SIZE, sendbuf, cd->buff, ssize)) {
         rpc_packet_free(call);
+        DeleteSema(cd->hdr.sema_id);
         return -E_SIF_PKT_SEND;
     }
 
@@ -263,6 +265,7 @@ int SifRpcGetOtherData(SifRpcReceiveData_t *rd, void *src, void *dest,
 
     if (!SifSendCmd(SIF_CMD_RPC_RDATA, other, RPC_PACKET_SIZE, NULL, NULL, 0)) {
         rpc_packet_free(other);
+        DeleteSema(rd->hdr.sema_id);
         return -E_SIF_PKT_SEND;
     }