RDMA/uverbs: Make the event_queue fds return POLLERR when disassociated
authorJason Gunthorpe <jgg@mellanox.com>
Tue, 7 Apr 2020 00:44:26 +0000 (21:44 -0300)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 14 Apr 2020 18:56:34 +0000 (15:56 -0300)
commiteb356e6dc15a30af604f052cd0e170450193c254
tree6eaff8f7bbf704c6a0e6f4b034a9c86b95077459
parentcf26deff9036cd3270af562dbec545239e5c7f07
RDMA/uverbs: Make the event_queue fds return POLLERR when disassociated

If is_closed is set, and the event list is empty, then read() will return
-EIO without blocking. After setting is_closed in
ib_uverbs_free_event_queue(), we do trigger a wake_up on the poll_wait,
but the fops->poll() function does not check it, so poll will continue to
sleep on an empty list.

Fixes: 14e23bd6d221 ("RDMA/core: Fix locking in ib_uverbs_event_read")
Link: https://lore.kernel.org/r/0-v1-ace813388969+48859-uverbs_poll_fix%25jgg@mellanox.com
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/uverbs_main.c