All of lore.kernel.org
 help / color / mirror / Atom feed
From: Leon Romanovsky <leon@kernel.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: linux-rdma@vger.kernel.org
Subject: Re: [PATCH] RDMA/uverbs: Make the event_queue fds return POLLERR when disassociated
Date: Tue, 7 Apr 2020 08:16:32 +0300	[thread overview]
Message-ID: <20200407051632.GL80989@unreal> (raw)
In-Reply-To: <0-v1-ace813388969+48859-uverbs_poll_fix%jgg@mellanox.com>

On Mon, Apr 06, 2020 at 09:44:26PM -0300, Jason Gunthorpe wrote:
> From: Jason Gunthorpe <jgg@mellanox.com>
>
> 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")
> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
> ---
>  drivers/infiniband/core/uverbs_main.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
> index 2d4083bf4a0487..8710a3427146e7 100644
> --- a/drivers/infiniband/core/uverbs_main.c
> +++ b/drivers/infiniband/core/uverbs_main.c
> @@ -296,6 +296,8 @@ static __poll_t ib_uverbs_event_poll(struct ib_uverbs_event_queue *ev_queue,
>  	spin_lock_irq(&ev_queue->lock);
>  	if (!list_empty(&ev_queue->event_list))
>  		pollflags = EPOLLIN | EPOLLRDNORM;
> +	else if (ev_queue->is_closed)
> +		pollflags = EPOLLERR;
>  	spin_unlock_irq(&ev_queue->lock);

Don't you need to set EPOLLHUP too? Probably, it won't change anything,
just for the sake of the correctness.

Thanks,
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>

  reply	other threads:[~2020-04-07  5:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-07  0:44 [PATCH] RDMA/uverbs: Make the event_queue fds return POLLERR when disassociated Jason Gunthorpe
2020-04-07  5:16 ` Leon Romanovsky [this message]
2020-04-07 11:51   ` Jason Gunthorpe
2020-04-07 12:20     ` Leon Romanovsky
2020-04-14 19:00 ` Jason Gunthorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200407051632.GL80989@unreal \
    --to=leon@kernel.org \
    --cc=jgg@ziepe.ca \
    --cc=linux-rdma@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.