File udev.git-7944a13a2b8516d5fa354703789f5988cb4299b6.patch of Package udev.openSUSE_12.1_Update
commit 7944a13a2b8516d5fa354703789f5988cb4299b6
Author: Steve Langasek <steve.langasek@canonical.com>
Date:   Sat Oct 8 02:14:09 2011 -0700
    udevd: exit - process events before signals in worker
    
    When a worker receives both a signal and a udev event in the same epoll_wait
    run, the event must be processed first because the udev parent considers the
    event already dispatched.  If we process the signal first and exit, udevd
    times out after 60 seconds waiting for a response from an already-dead
    worker.
    
    Ref: https://bugs.launchpad.net/bugs/818177
    Signed-off-by: Steve Langasek <steve.langasek@canonical.com>
diff --git a/udev/udevd.c b/udev/udevd.c
index 77aec9d..b65b53f 100644
--- a/udev/udevd.c
+++ b/udev/udevd.c
@@ -347,6 +347,7 @@ static void worker_new(struct event *event)
 				for (i = 0; i < fdcount; i++) {
 					if (ev[i].data.fd == fd_monitor && ev[i].events & EPOLLIN) {
 						dev = udev_monitor_receive_device(worker_monitor);
+						break;
 					} else if (ev[i].data.fd == fd_signal && ev[i].events & EPOLLIN) {
 						struct signalfd_siginfo fdsi;
 						ssize_t size;