Module: wine Branch: master Commit: 13204d87cfc35b436e50925701b55e55f1ab165a URL: http://source.winehq.org/git/wine.git/?a=commit;h=13204d87cfc35b436e50925701...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Feb 10 16:05:39 2017 +0100
server: Choose newer async object when searching from client pointer.
This fixes a race. Client may release and reuse async pointer while processing APC_ASYNC_IO. It is, however, guaranteed that get_async_result will be called on the newest one known to the server.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
server/async.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/async.c b/server/async.c index ec46103..ef548d1 100644 --- a/server/async.c +++ b/server/async.c @@ -255,7 +255,7 @@ struct async *create_async( struct thread *thread, struct async_queue *queue, co else async->iosb = NULL;
list_add_tail( &queue->queue, &async->queue_entry ); - list_add_tail( &thread->process->asyncs, &async->process_entry ); + list_add_head( &thread->process->asyncs, &async->process_entry ); grab_object( async );
if (queue->fd) set_fd_signaled( queue->fd, 0 );