summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/systemd/systemd/network-also-drop-requests-when-link-enters-linger-state.patch
blob: 4c402e7e5514ba4660055b2219717dcad6425f16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
From 56001f023305ea99329e27141d6e6067596491a9 Mon Sep 17 00:00:00 2001
From: Yu Watanabe <watanabe.yu+github@gmail.com>
Date: Mon, 17 May 2021 15:32:57 +0900
Subject: [PATCH] network: also drop requests when link enters linger state

Otherwise, if link is removed, several references to the link in remain
exist in requests.

Upstream-Status: Backport [https://github.com/systemd/systemd-stable/commit/56001f023305ea99329e27141d6e6067596491a9]
Signed-off-by: Ranjitsinh Rathod <ranjitsinh.rathod@kpit.com>

---
 src/network/networkd-link.c | 24 +++++++++++++-----------
 1 file 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,18 @@ 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;
+        Iterator i;
+
+        assert(link);
+        assert(link->manager);
+
+        ORDERED_SET_FOREACH(req, link->manager->request_queue, i)
+                if (req->link == link)
+                        request_drop(req);
+}
+
 void link_drop(Link *link) {
         if (!link)
                 return;
@@ -1782,6 +1793,8 @@ 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) {
-- 
2.17.1