chiark / gitweb /
volume_id: clean up linux_raid code
[elogind.git] / udevd.c
diff --git a/udevd.c b/udevd.c
index 66a410ec778b24100ca83b81893a550cb9041106..c895c1dc6a4a4384fb1d4280d0eb8772e1a0db50 100644 (file)
--- a/udevd.c
+++ b/udevd.c
@@ -115,7 +115,7 @@ static int udev_event_process(struct udevd_uevent_msg *msg)
        sigaction(SIGHUP, &act, NULL);
 
        /* trigger timeout to prevent hanging processes */
-       alarm(UDEV_ALARM_TIMEOUT);
+       alarm(UDEV_EVENT_TIMEOUT);
 
        /* reconstruct event environment from message */
        for (i = 0; msg->envp[i]; i++)
@@ -131,6 +131,10 @@ static int udev_event_process(struct udevd_uevent_msg *msg)
 
        retval = udev_device_event(&rules, udev);
 
+       /* rules may change/disable the timeout */
+       if (udev->event_timeout >= 0)
+               alarm(udev->event_timeout);
+
        /* run programs collected by RUN-key*/
        if (retval == 0 && !udev->ignore_device && udev_run)
                retval = udev_rules_run(udev);