diff mbox series

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

Message ID 20180921124617.31327-1-kaslevs@vmware.com (mailing list archive)
State Handled Elsewhere
Headers show
Series [virt-server] trace-cmd: Fix a minor bug in `trace-cmd listen` | expand

Commit Message

Slavomir Kaslev Sept. 21, 2018, 12:46 p.m. UTC
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;

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`.

Signed-off-by: Slavomir Kaslev <kaslevs@vmware.com>
---
 tracecmd/trace-listen.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Steven Rostedt Sept. 21, 2018, 1:32 p.m. UTC | #1
On Fri, 21 Sep 2018 15:46:17 +0300
Slavomir Kaslev <kaslevs@vmware.com> 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@vmware.com>
> ---
>  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) {
diff mbox series

Patch

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) {