diff options
Diffstat (limited to 'meta/recipes-core/systemd/systemd/network-merge-link_drop-and-link_detach_from_manager.patch')
-rw-r--r-- | meta/recipes-core/systemd/systemd/network-merge-link_drop-and-link_detach_from_manager.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/meta/recipes-core/systemd/systemd/network-merge-link_drop-and-link_detach_from_manager.patch b/meta/recipes-core/systemd/systemd/network-merge-link_drop-and-link_detach_from_manager.patch new file mode 100644 index 0000000000..65bdc611df --- /dev/null +++ b/meta/recipes-core/systemd/systemd/network-merge-link_drop-and-link_detach_from_manager.patch | |||
@@ -0,0 +1,67 @@ | |||
1 | From 63130eb36dc51e4fd50716c585f98ebe456ca7cf Mon Sep 17 00:00:00 2001 | ||
2 | From: Yu Watanabe <watanabe.yu+github@gmail.com> | ||
3 | Date: Mon, 17 May 2021 15:40:15 +0900 | ||
4 | Subject: [PATCH] network: merge link_drop() and link_detach_from_manager() | ||
5 | |||
6 | link_detach_from_manager() is only called by link_drop(). It is not | ||
7 | necessary to split such tiny function. | ||
8 | |||
9 | Upstream-Status: Backport [https://github.com/systemd/systemd-stable/commit/63130eb36dc51e4fd50716c585f98ebe456ca7cf] | ||
10 | Signed-off-by: Ranjitsinh Rathod <ranjitsinh.rathod@kpit.com> | ||
11 | |||
12 | --- | ||
13 | src/network/networkd-link.c | 27 ++++++++++++--------------- | ||
14 | 1 file changed, 12 insertions(+), 15 deletions(-) | ||
15 | |||
16 | diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c | ||
17 | index 9d30e16b0a..67d01ac44d 100644 | ||
18 | --- a/src/network/networkd-link.c | ||
19 | +++ b/src/network/networkd-link.c | ||
20 | @@ -2019,24 +2019,17 @@ static void link_drop_from_master(Link *link, NetDev *netdev) { | ||
21 | link_unref(set_remove(master->slaves, link)); | ||
22 | } | ||
23 | |||
24 | -static void link_detach_from_manager(Link *link) { | ||
25 | - if (!link || !link->manager) | ||
26 | - return; | ||
27 | - | ||
28 | - link_unref(set_remove(link->manager->links_requesting_uuid, link)); | ||
29 | - link_clean(link); | ||
30 | - | ||
31 | - /* The following must be called at last. */ | ||
32 | - assert_se(hashmap_remove(link->manager->links, INT_TO_PTR(link->ifindex)) == link); | ||
33 | - link_unref(link); | ||
34 | -} | ||
35 | - | ||
36 | void link_drop(Link *link) { | ||
37 | - if (!link || link->state == LINK_STATE_LINGER) | ||
38 | + if (!link) | ||
39 | return; | ||
40 | |||
41 | + assert(link->manager); | ||
42 | + | ||
43 | link_set_state(link, LINK_STATE_LINGER); | ||
44 | |||
45 | + /* Drop all references from other links and manager. Note that async netlink calls may have | ||
46 | + * references to the link, and they will be dropped when we receive replies. */ | ||
47 | + | ||
48 | link_free_carrier_maps(link); | ||
49 | |||
50 | if (link->network) { | ||
51 | @@ -2044,10 +2037,14 @@ void link_drop(Link *link) { | ||
52 | link_drop_from_master(link, link->network->bond); | ||
53 | } | ||
54 | |||
55 | - log_link_debug(link, "Link removed"); | ||
56 | + link_unref(set_remove(link->manager->links_requesting_uuid, link)); | ||
57 | |||
58 | (void) unlink(link->state_file); | ||
59 | - link_detach_from_manager(link); | ||
60 | + link_clean(link); | ||
61 | + | ||
62 | + /* The following must be called at last. */ | ||
63 | + assert_se(hashmap_remove(link->manager->links, INT_TO_PTR(link->ifindex)) == link); | ||
64 | + link_unref(link); | ||
65 | } | ||
66 | |||
67 | static int link_joined(Link *link) { | ||