From: Trey Aspelund Date: Mon, 11 Jul 2022 22:17:39 +0000 (-0400) Subject: bgpd: don't unlock bgp_dest twice X-Git-Tag: base_8.5~239^2~6 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=b5118501acea0d571bbc90a077f90a29a3e6a93d;p=matthieu%2Ffrr.git bgpd: don't unlock bgp_dest twice Both install_evpn_route_entry_in_vni_mac() and install_evpn_route_entry_in_vni_ip() will unlock the bgp_dest when install_evpn_route_entry_in_vni_common() returns, so there's no need to unlock the bgp_dest inside the _common function. Let's let the new wrappers handle the cleanup of the dest. Ticket: #3119673 Signed-off-by: Trey Aspelund --- diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c index 6d402a4fef..90e04a042d 100644 --- a/bgpd/bgp_evpn.c +++ b/bgpd/bgp_evpn.c @@ -2906,11 +2906,15 @@ static int install_evpn_route_entry_in_vni_common( new_local_es = bgp_evpn_attr_is_local_es(pi->attr); } else { - if (attrhash_cmp(pi->attr, parent_pi->attr) - && !CHECK_FLAG(pi->flags, BGP_PATH_REMOVED)) { - bgp_dest_unlock_node(dest); + /* Return early if attributes haven't changed + * and dest isn't flagged for removal. + * dest will be unlocked by either + * install_evpn_route_entry_in_vni_mac() or + * install_evpn_route_entry_in_vni_ip() + */ + if (attrhash_cmp(pi->attr, parent_pi->attr) && + !CHECK_FLAG(pi->flags, BGP_PATH_REMOVED)) return 0; - } /* The attribute has changed. */ /* Add (or update) attribute to hash. */ attr_new = bgp_attr_intern(parent_pi->attr);