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>
Acked-by:  K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
                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, kvp_recv_buffer, sizeof(kvp_recv_buffer), 0,
                                addr_p, &addr_l);