To reproduce the issue:
1. Create summary-address: `summary-address 1.1.1.0/24`.
2. Try to delete it with the wrong tag: `no summary-address 1.1.1.0/24 tag 1`.
Each time this command is executed, route_node_lookup is called which
locks route node one more time. As the tag is wrong, the function
return immediately without unlock.
3. Finally delete the summary-address: `no summary-address 1.1.1.0/24`.
The route node won't be deleted.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
rn->info = NULL;
route_unlock_node(rn);
- route_unlock_node(rn);
}
struct ospf_external_aggr_rt *
rn = route_node_lookup(ospf->rt_aggr_tbl, (struct prefix *)p);
if (!rn)
return OSPF_INVALID;
+ route_unlock_node(rn);
aggr = rn->info;
rn = route_node_lookup(ospf->rt_aggr_tbl, (struct prefix *)p);
if (!rn)
return OSPF_INVALID;
+ route_unlock_node(rn);
aggr = rn->info;