]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
tools/hv: terminate fcopy daemon if read from uio fails
authorOlaf Hering <olaf@aepfle.de>
Tue, 5 Nov 2024 08:14:04 +0000 (09:14 +0100)
committerWei Liu <wei.liu@kernel.org>
Mon, 9 Dec 2024 18:44:14 +0000 (18:44 +0000)
Terminate endless loop in reading fails, to avoid flooding syslog.

This happens if the state of "Guest services" integration service
is changed from "enabled" to "disabled" at runtime in the VM
settings. In this case pread returns EIO.

Also handle an interrupted system call, and continue in this case.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
Link: https://lore.kernel.org/r/20241105081437.15689-1-olaf@aepfle.de
Signed-off-by: Wei Liu <wei.liu@kernel.org>
Message-ID: <20241105081437.15689-1-olaf@aepfle.de>

tools/hv/hv_fcopy_uio_daemon.c

index 12743d7f164f0dd9600e7a26d0b8b2a77f440ca8..0198321d14a291640778cb147819ef35e13dfb3a 100644 (file)
@@ -466,8 +466,10 @@ int main(int argc, char *argv[])
                 */
                ret = pread(fcopy_fd, &tmp, sizeof(int), 0);
                if (ret < 0) {
+                       if (errno == EINTR || errno == EAGAIN)
+                               continue;
                        syslog(LOG_ERR, "pread failed: %s", strerror(errno));
-                       continue;
+                       goto close;
                }
 
                len = HV_RING_SIZE;