From 53fe371f27242690dcd904aa69fd793dc2bb13b1 Mon Sep 17 00:00:00 2001 From: acoul Date: Mon, 21 Feb 2011 13:16:44 +0000 Subject: [PATCH] net/quagga: add an upstream pending patch git-svn-id: svn://svn.openwrt.org/openwrt/packages@25650 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/000-upstream-bgp_lock_node.patch | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 net/quagga/patches/000-upstream-bgp_lock_node.patch 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 index 000000000..77f6400bc --- /dev/null +++ b/net/quagga/patches/000-upstream-bgp_lock_node.patch @@ -0,0 +1,31 @@ +From: Barry Friedman +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 +--- + +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++;