From: Barry Friedman <barryf@google.com>
Date: Thu, 3 Feb 2011 22:02:53 +0000 (-0800)
Subject: bgpd: Remove extra lock on interior table node
X-Git-Url: http://git.ozo.com/?p=quagga-next.git;a=commitdiff_plain;h=765ec33b44a7d8cf9290acd19dc19953df4ddb0d

bgpd: Remove extra lock on interior table node

If the radix tree creates an extra interior node in bgp_node_get(),
it locks the interior node even though this node is not returned to
the caller, so it may never be unlocked. The lock prevents this node
from being deleted.

* bgpd/bgp_table.c
  * bgp_node_get(): Remove lock on interior node which prevents
    proper node deletion

Signed-off-by: Barry Friedman <barryf@google.com>
---

diff --git a/bgpd/bgp_table.c b/bgpd/bgp_table.c
index 91cab60..a249c23 100644
--- a/bgpd/bgp_table.c
+++ b/bgpd/bgp_table.c
@@ -350,7 +350,6 @@ bgp_node_get (struct bgp_table *const table, struct prefix *p)
       if (new->p.prefixlen != p->prefixlen)
 	{
 	  match = new;
-	  bgp_lock_node (match);
 	  new = bgp_node_set (table, p);
 	  set_link (match, new);
 	  table->count++;