summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilly Tarreau <w@1wt.eu>2015-06-03 17:03:26 +0200
committerWilly Tarreau <w@1wt.eu>2015-06-03 17:12:46 +0200
commitcb162b71b1c49ccc6f13ae2b74ed4703ba86d872 (patch)
tree7bedb73b4ffbe9f8fabdbfed612f479a2ec2b70c
parentb473606512cb679a58f7fc0ba2775343ffdd9cbf (diff)
downloadlinux-stable-cb162b71b1c49ccc6f13ae2b74ed4703ba86d872.tar.gz
linux-stable-cb162b71b1c49ccc6f13ae2b74ed4703ba86d872.tar.bz2
linux-stable-cb162b71b1c49ccc6f13ae2b74ed4703ba86d872.zip
net: fix incorrect backport of tcp_send_fin in 2.6.32.66
Eric forwarded this bug report happening since 2.6.32.66, found that the backport of commit 845704a5 ("tcp: avoid looping in tcp_send_fin()") was incorrect and proposed this patch to fix it. The bug was also reported by starlight.2015q2@binnacle.cx who confirmed the fix. > Date: Fri, 29 May 2015 09:12:45 +0000 > From: "bugzilla-daemon@bugzilla.kernel.org" <bugzilla-daemon@bugzilla.kernel.org> > To: "shemminger@linux-foundation.org" <shemminger@linux-foundation.org> > Subject: [Bug 99161] New: 2.6.32.66 PPC Oops in tcp_send_fin > > > https://bugzilla.kernel.org/show_bug.cgi?id=99161 > > Bug ID: 99161 > Summary: 2.6.32.66 PPC Oops in tcp_send_fin > Product: Networking > Version: 2.5 > Kernel Version: 2.6.32.66 > Hardware: PPC-32 > OS: Linux > Tree: Mainline > Status: NEW > Severity: normal > Priority: P1 > Component: IPV4 > Assignee: shemminger@linux-foundation.org > Reporter: varenet@parisc-linux.org > Regression: No > > I just updated my trusty old PPC box to longterm 2.6.32.66 (was running .65 > before that with zero issue) and it started spewing oopses at me like hell > broke loose. This machine is primarily used as a DNS and MX (albeit under low > pressure). (...) Cc: Eric Dumazet <edumazet@google.com> Signed-off-by: Willy Tarreau <w@1wt.eu>
-rw-r--r--net/ipv4/tcp_output.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 5339f066234b..d1e2895bb63c 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2136,7 +2136,7 @@ void tcp_send_fin(struct sock *sk)
*/
if (tskb && (tcp_send_head(sk) || tcp_memory_pressure)) {
coalesce:
- TCP_SKB_CB(skb)->flags |= TCPCB_FLAG_FIN;
+ TCP_SKB_CB(tskb)->flags |= TCPCB_FLAG_FIN;
TCP_SKB_CB(tskb)->end_seq++;
tp->write_seq++;
if (!tcp_send_head(sk)) {