Re: [RFC PATCH 1/8] cec: fix epoll() by calling poll_wait first

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 07, 2019 at 12:49:41PM +0100, hverkuil-cisco@xxxxxxxxx wrote:
> From: Hans Verkuil <hverkuil-cisco@xxxxxxxxx>
> 
> The epoll function expects that whenever the poll file op is
> called, the poll_wait function is also called. That didn't
> always happen in cec_poll(). Fix this, otherwise epoll()
> would timeout when it shouldn't.
> 
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx>
> ---
>  drivers/media/cec/cec-api.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/media/cec/cec-api.c b/drivers/media/cec/cec-api.c
> index 391b6fd483e1..156a0d76ab2a 100644
> --- a/drivers/media/cec/cec-api.c
> +++ b/drivers/media/cec/cec-api.c
> @@ -38,6 +38,7 @@ static __poll_t cec_poll(struct file *filp,
>  	struct cec_adapter *adap = fh->adap;
>  	__poll_t res = 0;
>  
> +	poll_wait(filp, &fh->wait, poll);
>  	if (!cec_is_registered(adap))
>  		return EPOLLERR | EPOLLHUP;
>  	mutex_lock(&adap->lock);
> @@ -48,7 +49,6 @@ static __poll_t cec_poll(struct file *filp,
>  		res |= EPOLLIN | EPOLLRDNORM;
>  	if (fh->total_queued_events)
>  		res |= EPOLLPRI;
> -	poll_wait(filp, &fh->wait, poll);
>  	mutex_unlock(&adap->lock);
>  	return res;
>  }
> -- 
> 2.20.1

Reviewed-by: Sean Young <sean@xxxxxxxx>


Sean



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux