]> git.ozlabs.org Git - petitboot/commitdiff
discover/udev: don't propagate non-fatal errors from udev_process
authorJeremy Kerr <jk@ozlabs.org>
Tue, 1 Apr 2014 08:30:27 +0000 (16:30 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Tue, 1 Apr 2014 08:41:08 +0000 (16:41 +0800)
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 <jk@ozlabs.org>
discover/udev.c

index 656c5ab7faa3cacb294f329bdea474f50e526c07..317b4bc320d7e824cf15abb02e632c2bc33fb359 100644 (file)
@@ -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,