[PATCH 2/5] nodedev: udev: Remove the udevEventHandleCallback on fatal error

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

 



So we have a sanity check for the udev monitor fd. Theoretically, it
could happen that the udev monitor fd changes (due to our own wrongdoing,
hence the 'sanity' here) and if that happens it means we are handling an
event from a different entity than we think, thus we should remove the
handle if someone somewhere somehow hits this hypothetical case.

Signed-off-by: Erik Skultety <eskultet@xxxxxxxxxx>
---
 src/node_device/node_device_udev.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index 80c346e96..ea10dc3ce 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -1611,10 +1611,19 @@ udevEventHandleCallback(int watch ATTRIBUTE_UNUSED,
 
     udev_fd = udev_monitor_get_fd(udev_monitor);
     if (fd != udev_fd) {
+        udevPrivate *priv = driver->privateData;
+
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("File descriptor returned by udev %d does not "
                          "match node device file descriptor %d"),
                        fd, udev_fd);
+
+        /* this is a non-recoverable error, let's remove the handle, so that we
+         * don't get in here again because of some spurious behaviour and report
+         * the same error multiple times
+         */
+        virEventRemoveHandle(priv->watch);
+
         goto cleanup;
     }
 
-- 
2.13.3

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux