diff options
Diffstat (limited to 'ospf6d')
| -rw-r--r-- | ospf6d/ospf6_gr.c | 8 | ||||
| -rw-r--r-- | ospf6d/ospf6_lsdb.c | 4 | 
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;  | 
