]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: manager - free bus after own objects
authorTom Gundersen <teg@jklm.no>
Fri, 9 Oct 2015 19:36:04 +0000 (21:36 +0200)
committerTom Gundersen <teg@jklm.no>
Sun, 11 Oct 2015 12:21:41 +0000 (14:21 +0200)
Freeing links/addresses may trigger sending signals over the bus, so let's make sure
the bus stays around until our own objects have been freed.

src/network/networkd-manager.c

index b4259cafefa57e2162a8f7997b02061efd46cb7d..e42f2a4c1e32f7d5d66e42ba04365136aadfdc90 100644 (file)
@@ -477,14 +477,6 @@ void manager_free(Manager *m) {
 
         free(m->state_file);
 
-        sd_event_source_unref(m->udev_event_source);
-        udev_monitor_unref(m->udev_monitor);
-        udev_unref(m->udev);
-
-        sd_bus_unref(m->bus);
-        sd_bus_slot_unref(m->prepare_for_sleep_slot);
-        sd_event_source_unref(m->bus_retry_event_source);
-
         while ((link = hashmap_first(m->links)))
                 link_unref(link);
         hashmap_free(m->links);
@@ -504,6 +496,14 @@ void manager_free(Manager *m) {
         sd_netlink_unref(m->rtnl);
         sd_event_unref(m->event);
 
+        sd_event_source_unref(m->udev_event_source);
+        udev_monitor_unref(m->udev_monitor);
+        udev_unref(m->udev);
+
+        sd_bus_unref(m->bus);
+        sd_bus_slot_unref(m->prepare_for_sleep_slot);
+        sd_event_source_unref(m->bus_retry_event_source);
+
         free(m);
 }