This is an automated email from the ASF dual-hosted git repository.

pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git

commit 26892be8946ef3ed54c46839e1badb130710dd17
Author: zhanghongyu <zhanghon...@xiaomi.com>
AuthorDate: Thu Apr 7 19:33:38 2022 +0800

    usrsock: fix usrsock close hang when net not ready
    
    reason: ept NULL when close request and poll event occur simultaneously
    
    Signed-off-by: zhanghongyu <zhanghon...@xiaomi.com>
---
 netutils/usrsock_rpmsg/usrsock_rpmsg_server.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c 
b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c
index d6004f466..0cb96590f 100644
--- a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c
+++ b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c
@@ -284,12 +284,12 @@ static int usrsock_rpmsg_close_handler(struct 
rpmsg_endpoint *ept,
   if (req->usockid >= 0 &&
       req->usockid < CONFIG_NETUTILS_USRSOCK_NSOCK_DESCRIPTORS)
     {
+      pthread_mutex_lock(&priv->mutex);
       priv->pfds[req->usockid].ptr = NULL;
       priv->epts[req->usockid] = NULL;
 
       /* Signal and wait the poll thread to wakeup */
 
-      pthread_mutex_lock(&priv->mutex);
       usrsock_rpmsg_notify_poll(priv);
       pthread_cond_wait(&priv->cond, &priv->mutex);
       pthread_mutex_unlock(&priv->mutex);

Reply via email to