From: Joakim Tjernlund Date: Mon, 8 Mar 2010 12:58:12 +0000 (+0100) Subject: ospfd: ospf_ase.c, external_lsa locking fixes. X-Git-Tag: frr-2.0-rc1~727 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=d8d939a61eb27fbb175d99a46ba8e61dddb34e81;p=mirror%2Ffrr.git ospfd: ospf_ase.c, external_lsa locking fixes. Signed-off-by: Joakim Tjernlund Acked-by: Feng Lu (cherry picked from commit fc363cd8a02ad1ac8a6ca57013fd8c531d45926a) --- diff --git a/ospfd/ospf_ase.c b/ospfd/ospf_ase.c index ffbc89fa57..af1abfbc93 100644 --- a/ospfd/ospf_ase.c +++ b/ospfd/ospf_ase.c @@ -723,6 +723,8 @@ ospf_ase_register_external_lsa (struct ospf_lsa *lsa, struct ospf *top) rn = route_node_get (top->external_lsas, (struct prefix *) &p); if ((lst = rn->info) == NULL) rn->info = lst = list_new(); + else + route_unlock_node (rn); /* We assume that if LSA is deleted from DB is is also deleted from this RT */ @@ -743,13 +745,13 @@ ospf_ase_unregister_external_lsa (struct ospf_lsa *lsa, struct ospf *top) p.prefixlen = ip_masklen (al->mask); apply_mask_ipv4 (&p); - rn = route_node_get (top->external_lsas, (struct prefix *) &p); - lst = rn->info; + rn = route_node_lookup (top->external_lsas, (struct prefix *) &p); - /* XXX lst can be NULL */ - if (lst) { + if (rn) { + lst = rn->info; listnode_delete (lst, lsa); ospf_lsa_unlock (&lsa); /* external_lsas list */ + route_unlock_node (rn); } }