Re: [PATCH] [virt-server] trace-cmd: Fix a minor bug in `trace-cmd listen`

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

 



On Fri, 21 Sep 2018 15:46:17 +0300
Slavomir Kaslev <kaslevs@xxxxxxxxxx> wrote:

> There is a potential bug caused by C's operator precedence when checking
> the flags set by `poll` in `trace-cmd listen`:
> 
> 			if (!fds[i].revents & POLLIN)
> 				continue;
> 
> vs
> 
> 			if (!(fds[i].revents & POLLIN))
> 				continue;
> 

Nice catch!

> Curiously enough, the bug doesn't manifest itself since POLLIN is equal
> to 1 and `trace-cmd listen` waits only for read events so no other flags
> will be set by `poll`.

Funny how it worked out that way. Probably why it wasn't caught before,
because if it didn't work out that way, it would have shown up quickly
and have been fixed!

-- Steve

> 
> Signed-off-by: Slavomir Kaslev <kaslevs@xxxxxxxxxx>
> ---
>  tracecmd/trace-listen.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tracecmd/trace-listen.c b/tracecmd/trace-listen.c
> index 7bc723e..c05c2d8 100644
> --- a/tracecmd/trace-listen.c
> +++ b/tracecmd/trace-listen.c
> @@ -2020,7 +2020,7 @@ static void do_accept_loop(int nfd, int vfd, int mfd)
>  				continue;
>  			}
>  
> -			if (!fds[i].revents & POLLIN)
> +			if (!(fds[i].revents & POLLIN))
>  				continue;
>  
>  			if (i < FD_CONNECTED) {




[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux