diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index baa1cd3f7f..c2fb21c736 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -3129,12 +3129,12 @@ static int link_configure_duid(Link *link) { r = set_put(m->links_requesting_uuid, link); if (r < 0) return log_oom(); + if (r > 0) + link_ref(link); r = set_put(m->duids_requesting_uuid, duid); if (r < 0) return log_oom(); - - link_ref(link); } return 0; diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 14a883aa30..08666fd92d 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -2312,12 +2312,12 @@ int manager_request_product_uuid(Manager *m, Link *link) { r = set_ensure_put(&m->links_requesting_uuid, NULL, link); if (r < 0) return log_oom(); + if (r > 0) + link_ref(link); r = set_ensure_put(&m->duids_requesting_uuid, NULL, duid); if (r < 0) return log_oom(); - - link_ref(link); } if (!m->bus || sd_bus_is_ready(m->bus) <= 0) {