From: Jeremy Kerr Date: Tue, 1 Apr 2014 08:30:27 +0000 (+0800) Subject: discover/udev: don't propagate non-fatal errors from udev_process X-Git-Tag: v1.0.0~210 X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=commitdiff_plain;h=a574a72dcfea1bb61714754eca5612dde3632f0e 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 --- 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,