From a574a72dcfea1bb61714754eca5612dde3632f0e Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Tue, 1 Apr 2014 16:30:27 +0800 Subject: [PATCH] discover/udev: don't propagate non-fatal errors from udev_process Currently, we have a bug where non-zero return codes from udev_handle_dev_* cause the udev worker from deregistering from the waiter poll loop. This is becasue udev_process is propagating these errors, causing the deregistration. This change stops propagation of non-fatal errors, so we don't deregister. Signed-off-by: Jeremy Kerr --- discover/udev.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/discover/udev.c b/discover/udev.c index 656c5ab..317b4bc 100644 --- a/discover/udev.c +++ b/discover/udev.c @@ -398,10 +398,8 @@ static int udev_process(void *arg) struct udev_monitor *monitor = arg; struct udev_device *dev; const char *action; - int result; dev = udev_monitor_receive_device(monitor); - if (!dev) { pb_log("udev_monitor_receive_device failed\n"); return -1; @@ -411,17 +409,12 @@ static int udev_process(void *arg) if (!action) { pb_log("udev_device_get_action failed\n"); - goto fail; + } else { + udev_handle_dev_action(dev, action); } - result = udev_handle_dev_action(dev, action); - udev_device_unref(dev); - return result; - -fail: - udev_device_unref(dev); - return -1; + return 0; } static void udev_log_fn(struct udev __attribute__((unused)) *udev, -- 2.39.2