From: Zebediah Figura Subject: Re: [PATCH v11 1/2] ntdll/socket: Implement exclusive flag for IOCTL_AFD_POLL. Message-Id: <448b7a9a-c23c-3471-6599-a93aca5a9ff2@codeweavers.com> Date: Thu, 16 Sep 2021 11:30:50 -0500 In-Reply-To: <20210916153520.82751-1-guillaume.charifi@sfr.fr> References: <20210916153520.82751-1-guillaume.charifi@sfr.fr> On 9/16/21 10:35 AM, Guillaume Charifi wrote: > @@ -788,7 +791,13 @@ static void free_poll_req( void *private ) > if (req->timeout) remove_timeout_user( req->timeout ); > > for (i = 0; i < req->count; ++i) > + { > + if (req->sockets[i].sock->main_poll == req) > + req->sockets[i].sock->main_poll = NULL; > + > release_object( req->sockets[i].sock ); > + } > + > release_object( req->async ); > release_object( req->iosb ); > list_remove( &req->entry ); This is too late, for the reasons mentioned earlier; it needs to be done when the request is terminated, so in complete_async_polls(), async_poll_timeout(), and poll_socket(). We shouldn't need to worry about doing it in sock_close_handle(), since we can't queue any more requests.