chiark / gitweb /
networkd: netdev - take ref immediately after calling out
[elogind.git] / src / network / networkd-netdev.c
index c80e943871026b601646045fdb43ce3af1028d41..0861ff3cc1da958db377cc31e2ffbed4aa814473 100644 (file)
@@ -184,6 +184,8 @@ static int netdev_enslave_ready(NetDev *netdev, Link* link, sd_rtnl_message_hand
                 return r;
         }
 
+        link_ref(link);
+
         log_debug_netdev(netdev, "enslaving link '%s'", link->ifname);
 
         return 0;
@@ -393,6 +395,7 @@ int netdev_enslave(NetDev *netdev, Link *link, sd_rtnl_message_handler_t callbac
 
                 cb->callback = callback;
                 cb->link = link;
+                link_ref(link);
 
                 LIST_PREPEND(callbacks, netdev->callbacks, cb);
         }
@@ -678,8 +681,6 @@ static int netdev_load_one(Manager *manager, const char *filename) {
                 if (r < 0)
                         return r;
 
-                netdev_ref(netdev);
-
                 break;
         case NETDEV_KIND_BRIDGE:
         case NETDEV_KIND_BOND: