Revision ec34232575083fd0f43d3a101e8ebb041b203761 authored by Andrew Vagin on 15 November 2012, 04:03:17 UTC, committed by David S. Miller on 15 November 2012, 22:44:58 UTC
Currently if a socket was repaired with a few packet in a write queue,
a kernel bug may be triggered:

kernel BUG at net/ipv4/tcp_output.c:2330!
RIP: 0010:[<ffffffff8155784f>] tcp_retransmit_skb+0x5ff/0x610

According to the initial realization v3.4-rc2-963-gc0e88ff,
all skb-s should look like already posted. This patch fixes code
according with this sentence.

Here are three points, which were not done in the initial patch:
1. A tcp send head should not be changed
2. Initialize TSO state of a skb
3. Reset the retransmission time

This patch moves logic from tcp_sendmsg to tcp_write_xmit. A packet
passes the ussual way, but isn't sent to network. This patch solves
all described problems and handles tcp_sendpages.

Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
Cc: James Morris <jmorris@namei.org>
Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Cc: Patrick McHardy <kaber@trash.net>
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 0da9a0c
History
File Mode Size
internal
aead.h -rw-r--r-- 2.6 KB
aes.h -rw-r--r-- 1019 bytes
algapi.h -rw-r--r-- 10.1 KB
authenc.h -rw-r--r-- 609 bytes
b128ops.h -rw-r--r-- 2.4 KB
blowfish.h -rw-r--r-- 376 bytes
cast5.h -rw-r--r-- 648 bytes
cast6.h -rw-r--r-- 694 bytes
compress.h -rw-r--r-- 4.0 KB
cryptd.h -rw-r--r-- 1.8 KB
crypto_wq.h -rw-r--r-- 122 bytes
ctr.h -rw-r--r-- 524 bytes
des.h -rw-r--r-- 403 bytes
gf128mul.h -rw-r--r-- 8.0 KB
hash.h -rw-r--r-- 8.8 KB
if_alg.h -rw-r--r-- 2.2 KB
lrw.h -rw-r--r-- 1.2 KB
md5.h -rw-r--r-- 288 bytes
padlock.h -rw-r--r-- 649 bytes
pcrypt.h -rw-r--r-- 1.4 KB
public_key.h -rw-r--r-- 2.5 KB
rng.h -rw-r--r-- 1.8 KB
scatterwalk.h -rw-r--r-- 3.2 KB
serpent.h -rw-r--r-- 673 bytes
sha.h -rw-r--r-- 2.1 KB
skcipher.h -rw-r--r-- 2.7 KB
twofish.h -rw-r--r-- 716 bytes
vmac.h -rw-r--r-- 2.0 KB
xts.h -rw-r--r-- 613 bytes

back to top