annotate poll-related wait keys
__poll_t is also used as wait key in some waitqueues. Verify that wait_..._poll() gets __poll_t as key and provide a helper for wakeup functions to get back to that __poll_t value. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -170,7 +170,7 @@ static int vhost_poll_wakeup(wait_queue_entry_t *wait, unsigned mode, int sync,
|
||||
{
|
||||
struct vhost_poll *poll = container_of(wait, struct vhost_poll, wait);
|
||||
|
||||
if (!((unsigned long)key & poll->mask))
|
||||
if (!(key_to_poll(key) & poll->mask))
|
||||
return 0;
|
||||
|
||||
vhost_poll_queue(poll);
|
||||
@@ -211,7 +211,7 @@ int vhost_poll_start(struct vhost_poll *poll, struct file *file)
|
||||
|
||||
mask = file->f_op->poll(file, &poll->table);
|
||||
if (mask)
|
||||
vhost_poll_wakeup(&poll->wait, 0, 0, (void *)(uintptr_t)mask);
|
||||
vhost_poll_wakeup(&poll->wait, 0, 0, poll_to_key(mask));
|
||||
if (mask & POLLERR) {
|
||||
if (poll->wqh)
|
||||
remove_wait_queue(poll->wqh, &poll->wait);
|
||||
|
Reference in New Issue
Block a user