Package: udev
Version: 0.72-2
Severity: grave

udevd fails to timeout events if it runs on a kernel without inotify.
The attached patch fixes the select call.

Bastian

-- 
Actual war is a very messy business.  Very, very messy business.
                -- Kirk, "A Taste of Armageddon", stardate 3193.0
diff -urN udev-072.orig/udevd.c udev-072/udevd.c
--- udev-072.orig/udevd.c       2005-11-05 22:05:35.000000000 +0100
+++ udev-072/udevd.c    2005-11-07 00:01:32.000000000 +0100
@@ -996,12 +996,17 @@
 
                FD_ZERO(&readfds);
                FD_SET(signal_pipe[READ_END], &readfds);
+               fdcount = signal_pipe[READ_END];
                FD_SET(udevd_sock, &readfds);
+               fdcount = UDEV_MAX(fdcount, udevd_sock);
                FD_SET(uevent_netlink_sock, &readfds);
-               if (inotify_fd > 0)
+               fdcount = UDEV_MAX(fdcount, uevent_netlink_sock);
+               if (inotify_fd > 0) {
                        FD_SET(inotify_fd, &readfds);
+                       fdcount = UDEV_MAX(fdcount, inotify_fd);
+               }
 
-               fdcount = select(UDEV_MAX(uevent_netlink_sock, inotify_fd)+1, 
&readfds, NULL, NULL, NULL);
+               fdcount = select(fdcount+1, &readfds, NULL, NULL, NULL);
                if (fdcount < 0) {
                        if (errno != EINTR)
                                dbg("error in select: %s", strerror(errno));

Attachment: signature.asc
Description: Digital signature

Reply via email to