From: Chris Wright Date: Tue, 8 Nov 2005 23:36:12 +0000 (-0800) Subject: Add ipvs fix from Julian Anastasov X-Git-Tag: v2.6.14.2~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b8ea2d8d5413756b7800e4ea69ac90ab9ccb510d;p=thirdparty%2Fkernel%2Fstable-queue.git Add ipvs fix from Julian Anastasov --- diff --git a/queue/ipvs-fix-connection-leak.patch b/queue/ipvs-fix-connection-leak.patch new file mode 100644 index 00000000000..0bee93a4e03 --- /dev/null +++ b/queue/ipvs-fix-connection-leak.patch @@ -0,0 +1,47 @@ +From stable-bounces@linux.kernel.org Tue Nov 8 13:15:57 2005 +Date: Tue, 8 Nov 2005 23:16:08 +0200 (EET) +From: Julian Anastasov +To: stable@kernel.org +Cc: "David S. Miller" , Roberto Nibali +Subject: [PATCH] ipvs: fix connection leak if expire_nodest_conn=1 + + + Hello, forwarding patch to stable as suggested by DaveM. + + There was a fix in 2.6.13 that changed the behaviour of +ip_vs_conn_expire_now function not to put reference to connection, +its callers should hold write lock or connection refcnt. But we +forgot to convert one caller, when the real server for connection +is unavailable caller should put the connection reference. It +happens only when sysctl var expire_nodest_conn is set to 1 and +such connections never expire. Thanks to Roberto Nibali who found +the problem and tested a 2.4.32-rc2 patch, which is equal to this +2.6 version. + +Signed-off-by: Julian Anastasov +Signed-off-by: Roberto Nibali +Signed-off-by: Chris Wright +--- + + net/ipv4/ipvs/ip_vs_core.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +Index: linux-2.6.14.y/net/ipv4/ipvs/ip_vs_core.c +=================================================================== +--- linux-2.6.14.y.orig/net/ipv4/ipvs/ip_vs_core.c ++++ linux-2.6.14.y/net/ipv4/ipvs/ip_vs_core.c +@@ -1009,11 +1009,10 @@ ip_vs_in(unsigned int hooknum, struct sk + if (sysctl_ip_vs_expire_nodest_conn) { + /* try to expire the connection immediately */ + ip_vs_conn_expire_now(cp); +- } else { +- /* don't restart its timer, and silently +- drop the packet. */ +- __ip_vs_conn_put(cp); + } ++ /* don't restart its timer, and silently ++ drop the packet. */ ++ __ip_vs_conn_put(cp); + return NF_DROP; + } + diff --git a/queue/series b/queue/series index 1952b25ccd6..b29623b0ab6 100644 --- a/queue/series +++ b/queue/series @@ -9,3 +9,4 @@ airo.c-airo_cs.c-correct-prototypes.patch fix-zero-size-datagram-reception.patch fix-signal-live-leak-in-copy_process.patch fix-de_thread-vs-send_group_sendqueue-race.patch +ipvs-fix-connection-leak.patch