diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c index 2404442fd7..50972847f2 100644 --- a/src/udev/udevadm-settle.c +++ b/src/udev/udevadm-settle.c @@ -176,21 +176,24 @@ int settle_main(int argc, char *argv[], void *userdata) { deadline = now(CLOCK_MONOTONIC) + arg_timeout; - /* guarantee that the udev daemon isn't pre-processing */ if (getuid() == 0) { _cleanup_(udev_ctrl_unrefp) UdevCtrl *uctrl = NULL; - if (udev_ctrl_new(&uctrl) >= 0) { - r = udev_ctrl_send_ping(uctrl); - if (r < 0) { - log_debug_errno(r, "Failed to connect to udev daemon: %m"); - return 0; - } + /* guarantee that the udev daemon isn't pre-processing */ - r = udev_ctrl_wait(uctrl, MAX(5 * USEC_PER_SEC, arg_timeout)); - if (r < 0) - return log_error_errno(r, "Failed to wait for daemon to reply: %m"); + r = udev_ctrl_new(&uctrl); + if (r < 0) + return log_error_errno(r, "Failed to create control socket for udev daemon: %m"); + + r = udev_ctrl_send_ping(uctrl); + if (r < 0) { + log_debug_errno(r, "Failed to connect to udev daemon, ignoring: %m"); + return 0; } + + r = udev_ctrl_wait(uctrl, MAX(5 * USEC_PER_SEC, arg_timeout)); + if (r < 0) + return log_error_errno(r, "Failed to wait for daemon to reply: %m"); } fd = udev_queue_init();