You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/11/20 17:16:02 UTC
[incubator-nuttx] 07/10: drivers/rpmsg/clk/ioe: destroy nxsem properly
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 07604b3220c54e10841b1004b6992600d3b684bf
Author: chao an <an...@xiaomi.com>
AuthorDate: Sun Nov 20 22:07:15 2022 +0800
drivers/rpmsg/clk/ioe: destroy nxsem properly
Signed-off-by: chao an <an...@xiaomi.com>
---
drivers/clk/clk_rpmsg.c | 17 ++++++++---------
drivers/ioexpander/ioe_rpmsg.c | 17 ++++++++---------
2 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/drivers/clk/clk_rpmsg.c b/drivers/clk/clk_rpmsg.c
index 2918b73399..e0bbc50f35 100644
--- a/drivers/clk/clk_rpmsg.c
+++ b/drivers/clk/clk_rpmsg.c
@@ -485,18 +485,17 @@ static int64_t clk_rpmsg_sendrecv(FAR struct rpmsg_endpoint *ept,
cookie.result = -EIO;
ret = rpmsg_send_nocopy(ept, msg, len);
- if (ret < 0)
- {
- return ret;
- }
-
- ret = nxsem_wait_uninterruptible(&cookie.sem);
- if (ret < 0)
+ if (ret >= 0)
{
- return ret;
+ ret = nxsem_wait_uninterruptible(&cookie.sem);
+ if (ret >= 0)
+ {
+ ret = cookie.result;
+ }
}
- return cookie.result;
+ nxsem_destroy(&cookie.sem);
+ return ret;
}
static bool clk_rpmsg_server_match(FAR struct rpmsg_device *rdev,
diff --git a/drivers/ioexpander/ioe_rpmsg.c b/drivers/ioexpander/ioe_rpmsg.c
index 8e26fa3060..7507ce6adb 100644
--- a/drivers/ioexpander/ioe_rpmsg.c
+++ b/drivers/ioexpander/ioe_rpmsg.c
@@ -275,18 +275,17 @@ static int ioe_rpmsg_sendrecv(FAR struct rpmsg_endpoint *ept,
msg->cookie = (uintptr_t)&cookie;
ret = rpmsg_send(ept, msg, len);
- if (ret < 0)
- {
- return ret;
- }
-
- ret = rpmsg_wait(ept, &cookie.sem);
- if (ret < 0)
+ if (ret >= 0)
{
- return ret;
+ ret = rpmsg_wait(ept, &cookie.sem);
+ if (ret >= 0)
+ {
+ ret = cookie.result;
+ }
}
- return cookie.result;
+ nxsem_destroy(&cookie.sem);
+ return ret;
}
static int ioe_rpmsg_direction(FAR struct ioexpander_dev_s *dev, uint8_t pin,