From 8e7a5ec81724917687b9f200e03f56545c8ee2af Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Tue, 31 Aug 2021 19:23:49 -0500 Subject: [PATCH] server: Use async->iosb->status instead of async->status in async_satisfied(). Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- server/async.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/async.c b/server/async.c index 086e5eb2870..7890122969f 100644 --- a/server/async.c +++ b/server/async.c @@ -112,13 +112,16 @@ static void async_satisfied( struct object *obj, struct wait_queue_entry *entry struct async *async = (struct async *)obj; assert( obj->ops == &async_ops ); + /* we only return an async handle for asyncs created via create_request_async() */ + assert( async->iosb ); + if (async->direct_result) { async_set_result( &async->obj, async->iosb->status, async->iosb->result ); async->direct_result = 0; } - set_wait_status( entry, async->status ); + set_wait_status( entry, async->iosb->status ); /* close wait handle here to avoid extra server round trip */ if (async->wait_handle) @@ -398,6 +401,7 @@ void async_set_result( struct object *obj, unsigned int status, apc_param_t tota if (async->timeout) remove_timeout_user( async->timeout ); async->timeout = NULL; async->status = status; + if (async->iosb) async->iosb->status = status; if (async->data.apc) {