tools: hv: Check return value of poll call
authorTomas Hozza <thozza@redhat.com>
Thu, 27 Jun 2013 11:52:49 +0000 (13:52 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 26 Jul 2013 23:40:41 +0000 (16:40 -0700)
Check return value of poll call and if it fails print error to the
system log. If errno is EINVAL then exit with non-zero value otherwise
continue the while loop and call poll again.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
tools/hv/hv_vss_daemon.c

index 64112e1..5febe35 100644 (file)
@@ -200,7 +200,16 @@ int main(void)
                socklen_t addr_l = sizeof(addr);
                pfd.events = POLLIN;
                pfd.revents = 0;
-               poll(&pfd, 1, -1);
+
+               if (poll(&pfd, 1, -1) < 0) {
+                       syslog(LOG_ERR, "poll failed; error:%d %s", errno, strerror(errno));
+                       if (errno == EINVAL) {
+                               close(fd);
+                               exit(EXIT_FAILURE);
+                       }
+                       else
+                               continue;
+               }
 
                len = recvfrom(fd, vss_recv_buffer, sizeof(vss_recv_buffer), 0,
                                addr_p, &addr_l);