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 2023/09/12 14:12:36 UTC
[nuttx] branch master updated: usrsock_rpmsg_server: Clear revents for POLLHUP and POLLERR
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/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 33da959fbc usrsock_rpmsg_server: Clear revents for POLLHUP and POLLERR
33da959fbc is described below
commit 33da959fbc5a1c0b14624375a25488683d347c07
Author: Zhe Weng <we...@xiaomi.com>
AuthorDate: Thu Jul 6 16:32:53 2023 +0800
usrsock_rpmsg_server: Clear revents for POLLHUP and POLLERR
Note:
tcp_poll_eventhandler have logic after poll_notify, if we teardown poll
inside poll callback without clearing revents, use-after-free will
happen.
Signed-off-by: Zhe Weng <we...@xiaomi.com>
---
drivers/usrsock/usrsock_rpmsg_server.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/usrsock/usrsock_rpmsg_server.c b/drivers/usrsock/usrsock_rpmsg_server.c
index bb12f2119d..5548e1106f 100644
--- a/drivers/usrsock/usrsock_rpmsg_server.c
+++ b/drivers/usrsock/usrsock_rpmsg_server.c
@@ -1082,6 +1082,7 @@ static void usrsock_rpmsg_poll_setup(FAR struct pollfd *pfds,
}
else
{
+ pfds->revents = 0;
pfds->events = 0;
ret = psock_poll(psock, pfds, false);
}
@@ -1142,6 +1143,10 @@ static void usrsock_rpmsg_poll_cb(FAR struct pollfd *pfds)
{
events |= USRSOCK_EVENT_RECVFROM_AVAIL;
}
+
+ /* Clear revents */
+
+ pfds->revents &= ~(POLLHUP | POLLERR);
}
if (oldevents != pfds->events)