diff options
-rw-r--r-- | src/network/networkd-link.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 67d01ac44d..b56c232eca 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1771,6 +1771,17 @@ static void link_drop_from_master(Link *link, NetDev *netdev) { link_unref(set_remove(master->slaves, link)); } +static void link_drop_requests(Link *link) { + Request *req; + + assert(link); + assert(link->manager); + + ORDERED_SET_FOREACH(req, link->manager->request_queue) + if (req->link == link) + request_drop(req); +} + static void link_drop(Link *link) { if (!link) return; @@ -1782,6 +1793,8 @@ static void link_drop(Link *link) { /* 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_drop_requests(link); + link_free_carrier_maps(link); if (link->network) { @@ -2098,17 +2111,6 @@ static int link_drop_config(Link *link) { return r; } -static void link_drop_requests(Link *link) { - Request *req; - - assert(link); - assert(link->manager); - - ORDERED_SET_FOREACH(req, link->manager->request_queue) - if (req->link == link) - request_drop(req); -} - int link_configure(Link *link) { int r; |