From: Rémi Bernon rbernon@codeweavers.com
The thread queue handle is private and it shouldn't be possible to wait on it from other threads. --- server/queue.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-)
diff --git a/server/queue.c b/server/queue.c index 7ae58bc2b2e..825ecb7217c 100644 --- a/server/queue.c +++ b/server/queue.c @@ -151,7 +151,6 @@ struct hotkey };
static void msg_queue_dump( struct object *obj, int verbose ); -static int msg_queue_add_queue( struct object *obj, struct wait_queue_entry *entry ); static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entry ); static void msg_queue_destroy( struct object *obj ); static void msg_queue_poll_event( struct fd *fd, int event ); @@ -164,7 +163,7 @@ static const struct object_ops msg_queue_ops = sizeof(struct msg_queue), /* size */ &no_type, /* type */ msg_queue_dump, /* dump */ - msg_queue_add_queue, /* add_queue */ + add_queue, /* add_queue */ remove_queue, /* remove_queue */ msg_queue_signaled, /* signaled */ no_satisfied, /* satisfied */ @@ -1295,21 +1294,6 @@ static int is_queue_hung( struct msg_queue *queue ) return queue->signaled && monotonic_time - queue->shared->access_time > 5 * TICKS_PER_SEC; }
-static int msg_queue_add_queue( struct object *obj, struct wait_queue_entry *entry ) -{ - struct msg_queue *queue = (struct msg_queue *)obj; - - /* a thread can only wait on its own queue */ - if (get_wait_queue_thread(entry)->queue != queue) - { - set_error( STATUS_ACCESS_DENIED ); - return 0; - } - - add_queue( obj, entry ); - return 1; -} - static void msg_queue_dump( struct object *obj, int verbose ) { struct msg_queue *queue = (struct msg_queue *)obj;