From 63130eb36dc51e4fd50716c585f98ebe456ca7cf Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 17 May 2021 15:40:15 +0900 Subject: [PATCH] network: merge link_drop() and link_detach_from_manager() link_detach_from_manager() is only called by link_drop(). It is not necessary to split such tiny function. Upstream-Status: Backport [https://github.com/systemd/systemd-stable/commit/63130eb36dc51e4fd50716c585f98ebe456ca7cf] Signed-off-by: Ranjitsinh Rathod --- src/network/networkd-link.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 9d30e16b0a..67d01ac44d 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -2019,24 +2019,17 @@ static void link_drop_from_master(Link *link, NetDev *netdev) { link_unref(set_remove(master->slaves, link)); } -static void link_detach_from_manager(Link *link) { - if (!link || !link->manager) - return; - - link_unref(set_remove(link->manager->links_requesting_uuid, link)); - link_clean(link); - - /* The following must be called at last. */ - assert_se(hashmap_remove(link->manager->links, INT_TO_PTR(link->ifindex)) == link); - link_unref(link); -} - void link_drop(Link *link) { - if (!link || link->state == LINK_STATE_LINGER) + if (!link) return; + assert(link->manager); + link_set_state(link, LINK_STATE_LINGER); + /* Drop all references from other links and manager. Note that async netlink calls may have + * references to the link, and they will be dropped when we receive replies. */ + link_free_carrier_maps(link); if (link->network) { @@ -2044,10 +2037,14 @@ void link_drop(Link *link) { link_drop_from_master(link, link->network->bond); } - log_link_debug(link, "Link removed"); + link_unref(set_remove(link->manager->links_requesting_uuid, link)); (void) unlink(link->state_file); - link_detach_from_manager(link); + link_clean(link); + + /* The following must be called at last. */ + assert_se(hashmap_remove(link->manager->links, INT_TO_PTR(link->ifindex)) == link); + link_unref(link); } static int link_joined(Link *link) {