From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yin Kangkai Date: Fri, 06 Aug 2010 07:23:58 +0000 Subject: [PATCH 1/3] udevd: unref udev device in error path Message-Id: <20100806072358.GN29131@kai-debian> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org >From 09610e30e2b2c087393afe1d620e5e6d75271503 Mon Sep 17 00:00:00 2001 From: Yin Kangkai Date: Thu, 5 Aug 2010 11:47:48 +0800 Subject: [PATCH 1/3] udevd: unref udev device in error path Signed-off-by: Yin Kangkai --- udev/udevd.c | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-) diff --git a/udev/udevd.c b/udev/udevd.c index 2808117..6dc9795 100644 --- a/udev/udevd.c +++ b/udev/udevd.c @@ -402,13 +402,13 @@ static void event_run(struct event *event, bool force) worker_new(event); } -static void event_queue_insert(struct udev_device *dev) +static int event_queue_insert(struct udev_device *dev) { struct event *event; event = calloc(1, sizeof(struct event)); if (event = NULL) - return; + return -1; event->udev = udev_device_get_udev(dev); event->dev = dev; @@ -429,8 +429,10 @@ static void event_queue_insert(struct udev_device *dev) /* run all events with a timeout set immediately */ if (udev_device_get_timeout(dev) > 0) { event_run(event, true); - return; + return 0; } + + return 0; } static void worker_kill(struct udev *udev, int retain) @@ -1351,9 +1353,8 @@ int main(int argc, char *argv[]) dev = udev_monitor_receive_device(monitor); if (dev != NULL) - event_queue_insert(dev); - else - udev_device_unref(dev); + if (event_queue_insert(dev) < 0) + udev_device_unref(dev); } /* start new events */ -- 1.6.5