]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fix for TCP_DEFER_ACCEPT regression, fwd from acme
authorChris Wright <chrisw@sous-sol.org>
Thu, 2 Mar 2006 03:16:40 +0000 (19:16 -0800)
committerChris Wright <chrisw@sous-sol.org>
Thu, 2 Mar 2006 03:16:40 +0000 (19:16 -0800)
queue/don-t-reset-rskq_defer_accept-in-reqsk_queue_alloc.patch [new file with mode: 0644]
queue/series [new file with mode: 0644]

diff --git a/queue/don-t-reset-rskq_defer_accept-in-reqsk_queue_alloc.patch b/queue/don-t-reset-rskq_defer_accept-in-reqsk_queue_alloc.patch
new file mode 100644 (file)
index 0000000..7d46092
--- /dev/null
@@ -0,0 +1,32 @@
+From chrisw@osdl.org  Wed Mar  1 12:22:20 2006
+From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
+Date: Feb 27, 2006 6:28 PM
+Subject: [REQSK] Don't reset rskq_defer_accept in reqsk_queue_alloc
+To: "David S. Miller" <davem@davemloft.net>
+Cc: netdev@vger.kernel.org, Andrew Morton <akpm@osdl.org>, "Alexandra N. Kossovsky" <Alexandra.Kossovsky@oktetlabs.ru>
+
+In 295f7324ff8d9ea58b4d3ec93b1aaa1d80e048a9 I moved defer_accept from
+tcp_sock to request_queue and mistakingly reset it at reqsl_queue_alloc, causing
+calls to setsockopt(TCP_DEFER_ACCEPT ) to be lost after bind, the fix is to
+remove the zeroing of rskq_defer_accept from reqsl_queue_alloc.
+
+Thanks to Alexandra N. Kossovsky <Alexandra.Kossovsky@oktetlabs.ru> for
+reporting and testing the suggested fix.
+
+Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ net/core/request_sock.c |    1 -
+ 1 files changed, 1 deletion(-)
+
+--- linux-2.6.15.5.orig/net/core/request_sock.c
++++ linux-2.6.15.5/net/core/request_sock.c
+@@ -52,7 +52,6 @@ int reqsk_queue_alloc(struct request_soc
+       get_random_bytes(&lopt->hash_rnd, sizeof(lopt->hash_rnd));
+       rwlock_init(&queue->syn_wait_lock);
+       queue->rskq_accept_head = queue->rskq_accept_head = NULL;
+-      queue->rskq_defer_accept = 0;
+       lopt->nr_table_entries = nr_table_entries;
+       write_lock_bh(&queue->syn_wait_lock);
diff --git a/queue/series b/queue/series
new file mode 100644 (file)
index 0000000..1e8c7e3
--- /dev/null
@@ -0,0 +1 @@
+don-t-reset-rskq_defer_accept-in-reqsk_queue_alloc.patch