chiark / gitweb /
Revert "udevd: simplify sigterm check"
authorColin Walters <walters@verbum.org>
Thu, 22 Aug 2013 21:03:29 +0000 (17:03 -0400)
committerColin Walters <walters@verbum.org>
Thu, 22 Aug 2013 21:07:02 +0000 (17:07 -0400)
This reverts commit 47e737dc13bf4251ae5a2249ec29b34503ed92e1 - it
introduced a use-after-free.  The only way the code would get simpler
is with a cleanup function, but eh, not worth it for just this one
bit.

Reviewed by kay on IRC.

src/udev/udevd.c

index fd799cc..7c6c5d6 100644 (file)
@@ -314,10 +314,12 @@ static void worker_new(struct event *event)
                         udev_device_unref(dev);
                         dev = NULL;
 
-                        udev_event_unref(udev_event);
-
-                        if (udev_event->sigterm)
+                        if (udev_event->sigterm) {
+                                udev_event_unref(udev_event);
                                 goto out;
+                        }
+
+                        udev_event_unref(udev_event);
 
                         /* wait for more device messages from main udevd, or term signal */
                         while (dev == NULL) {