net/quagga: add an upstream pending patch
authorAlexandros C. Couloumbis <alex@ozo.com>
Mon, 21 Feb 2011 13:16:44 +0000 (13:16 +0000)
committerAlexandros C. Couloumbis <alex@ozo.com>
Mon, 21 Feb 2011 13:16:44 +0000 (13:16 +0000)
SVN-Revision: 25650

net/quagga/patches/000-upstream-bgp_lock_node.patch [new file with mode: 0644]

diff --git a/net/quagga/patches/000-upstream-bgp_lock_node.patch b/net/quagga/patches/000-upstream-bgp_lock_node.patch
new file mode 100644 (file)
index 0000000..77f6400
--- /dev/null
@@ -0,0 +1,31 @@
+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++;