summaryrefslogtreecommitdiff
path: root/ospf6d
diff options
context:
space:
mode:
Diffstat (limited to 'ospf6d')
-rw-r--r--ospf6d/ospf6_gr.c8
-rw-r--r--ospf6d/ospf6_lsdb.c4
2 files changed, 9 insertions, 3 deletions
diff --git a/ospf6d/ospf6_gr.c b/ospf6d/ospf6_gr.c
index ecaaa038ab..f39da91415 100644
--- a/ospf6d/ospf6_gr.c
+++ b/ospf6d/ospf6_gr.c
@@ -293,8 +293,10 @@ static int ospf6_router_lsa_contains_adj(struct ospf6_area *area,
if (lsdesc->type != OSPF6_ROUTER_LSDESC_POINTTOPOINT)
continue;
- if (lsdesc->neighbor_router_id == neighbor_router_id)
+ if (lsdesc->neighbor_router_id == neighbor_router_id) {
+ ospf6_lsa_unlock(lsa);
return RTR_LSA_ADJ_FOUND;
+ }
}
}
@@ -511,8 +513,10 @@ static bool ospf6_gr_check_adjs(struct ospf6 *ospf6)
for (ALL_LSDB_TYPED_ADVRTR(area->lsdb, type, router,
lsa_self)) {
found = true;
- if (!ospf6_gr_check_adjs_lsa(area, lsa_self))
+ if (!ospf6_gr_check_adjs_lsa(area, lsa_self)) {
+ ospf6_lsa_unlock(lsa_self);
return false;
+ }
}
if (!found)
return false;
diff --git a/ospf6d/ospf6_lsdb.c b/ospf6d/ospf6_lsdb.c
index 7925a8b2f4..fa1a9a408d 100644
--- a/ospf6d/ospf6_lsdb.c
+++ b/ospf6d/ospf6_lsdb.c
@@ -236,8 +236,10 @@ struct ospf6_lsa *ospf6_find_inter_prefix_lsa(struct ospf6 *ospf6,
prefix.prefixlen = prefix_lsa->prefix.prefix_length;
ospf6_prefix_in6_addr(&prefix.u.prefix6, prefix_lsa,
&prefix_lsa->prefix);
- if (prefix_same(p, &prefix))
+ if (prefix_same(p, &prefix)) {
+ ospf6_lsa_unlock(lsa);
return lsa;
+ }
}
return NULL;