[udev] udev.spec: fixed pre/post udev kill loop

Harald Hoyer harald at fedoraproject.org
Mon Dec 6 09:20:53 UTC 2010


commit 15fa57fca0f4a9d31950a71f325f0638bdd329c1
Author: Harald Hoyer <harald at redhat.com>
Date:   Mon Dec 6 09:50:38 2010 +0100

    udev.spec: fixed pre/post udev kill loop

 udev.spec |   58 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 35 insertions(+), 23 deletions(-)
---
diff --git a/udev.spec b/udev.spec
index 5ca3750..823fa5d 100644
--- a/udev.spec
+++ b/udev.spec
@@ -7,7 +7,7 @@
 Summary: A rule-based device node and kernel event manager
 Name: udev
 Version: 164
-Release: 5%{?dist}
+Release: 6%{?dist}
 License: GPLv2+
 Group: System Environment/Base
 Provides: udev-persistent = %{version}-%{release}
@@ -181,17 +181,24 @@ install -m 0755 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/udev-post
 
 %preun
 if [ "$1" -eq 0 -a -f %{_initrddir}/udev ]; then
-        if [ -x /sbin/pidof ]; then
-                pid=$(/sbin/pidof -c udevd)
-                if [ -n "$pid" ]; then
-                        kill $pid
-                fi
-        fi
-        /sbin/chkconfig --del udev
+     if test -x /usr/bin/stat -a \
+	     "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then
+          if [ -x /sbin/pidof ]; then
+              pid=$(/sbin/pidof -c udevd)
+              while [ -n "$pid" ]; do
+                  for p in $pid; do
+                       kill $hard $p 2>/dev/null
+                  done
+                  sleep 0.2
+                  pid=$(/sbin/pidof -c udevd)
+                  hard="-9"
+	      done
+          fi
+     fi
+     /sbin/chkconfig --del udev
 fi
 if [ "$1" -eq 0 ]; then
-        /sbin/chkconfig --del udev-post
-#        /usr/bin/systemd-install --system --realize disable udev.service >/dev/null 2>&1 || :
+     /sbin/chkconfig --del udev-post
 fi
 exit 0
 
@@ -203,19 +210,21 @@ getent group floppy >/dev/null || /usr/sbin/groupadd -g 19 floppy || :
 
 # kill daemon if we are not in a chroot
 if test -f /proc/1/exe -a -d /proc/1/root; then
-        if test -x /usr/bin/stat -a "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then
-                if test -x /sbin/udevd -a -x /sbin/pidof ; then
-                        /sbin/udevadm control --stop-exec-queue
-                        pid=$(/sbin/pidof -c udevd)
-                        while [ -n "$pid" ]; do
-                                for p in $pid; do
-                                        kill $hard $p;
-                                done
-                                pid=$(/sbin/pidof -c udevd)
-                                hard="-9"
-                        done
-                fi
-        fi
+     if test -x /usr/bin/stat -a \
+	     "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then
+          if test -x /sbin/udevd -a -x /sbin/pidof ; then
+               /sbin/udevadm control --stop-exec-queue
+               pid=$(/sbin/pidof -c udevd)
+               while [ -n "$pid" ]; do
+                    for p in $pid; do
+                         kill $hard $p 2>/dev/null
+                    done
+                    sleep 0.2
+                    pid=$(/sbin/pidof -c udevd)
+                    hard="-9"
+               done
+          fi
+     fi
 fi
 exit 0
 
@@ -359,6 +368,9 @@ rm -rf $RPM_BUILD_ROOT
 %attr(0644,root,root) %{_libdir}/pkgconfig/gudev-1.0*
 
 %changelog
+* Mon Dec 06 2010 Harald Hoyer <harald at redhat.com> 164-6
+- fixed kill loop
+
 * Thu Nov 25 2010 Bastien Nocera <bnocera at redhat.com> 164-5
 - Add patches to fix touchpad toggle key handling
 


More information about the scm-commits mailing list