networkd: manager do not unef netlink and gennetlink early

Because of this the fd is getting closed and we getting errors
like
```
^Ceno1: Could not send rtnetlink message: Bad file descriptor
enp7s0f0: Could not send rtnetlink message: Bad file descriptor
enp7s0f0: Cannot delete unreachable route for DHCPv6 delegated subnet 2a0a:...:fc::/62: Bad file descriptor
Assertion '*_head == _item' failed at ../systemd/src/network/networkd-route.c:126, function route_free(). Aborting.
Aborted
```

Closes one of https://github.com/systemd/systemd/issues/12452
This commit is contained in:
Susant Sahani 2019-05-02 15:22:03 +05:30 committed by Yu Watanabe
parent c9c908a60d
commit d4df632674
1 changed files with 5 additions and 8 deletions

View File

@ -1427,7 +1427,6 @@ int manager_new(Manager **ret) {
void manager_free(Manager *m) {
AddressPool *pool;
Network *network;
Link *link;
if (!m)
@ -1435,10 +1434,6 @@ void manager_free(Manager *m) {
free(m->state_file);
sd_netlink_unref(m->rtnl);
sd_netlink_unref(m->genl);
sd_resolve_unref(m->resolve);
while ((link = hashmap_first(m->dhcp6_prefixes)))
manager_dhcp6_prefix_remove_all(m, link);
hashmap_free(m->dhcp6_prefixes);
@ -1457,9 +1452,7 @@ void manager_free(Manager *m) {
m->links = hashmap_free_with_destructor(m->links, link_unref);
m->duids_requesting_uuid = set_free(m->duids_requesting_uuid);
while ((network = m->networks))
network_unref(network);
hashmap_free(m->networks_by_name);
m->networks_by_name = hashmap_free_with_destructor(m->networks_by_name, network_unref);
m->netdevs = hashmap_free_with_destructor(m->netdevs, netdev_unref);
@ -1472,6 +1465,10 @@ void manager_free(Manager *m) {
m->rules_foreign = set_free_with_destructor(m->rules_foreign, routing_policy_rule_free);
set_free_with_destructor(m->rules_saved, routing_policy_rule_free);
sd_netlink_unref(m->rtnl);
sd_netlink_unref(m->genl);
sd_resolve_unref(m->resolve);
sd_event_unref(m->event);
sd_device_monitor_unref(m->device_monitor);