From cb162b71b1c49ccc6f13ae2b74ed4703ba86d872 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 3 Jun 2015 17:03:26 +0200 Subject: [PATCH] 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" > To: "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 Signed-off-by: Willy Tarreau --- net/ipv4/tcp_output.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 5339f066234b6..d1e2895bb63c3 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)) { -- 2.47.2