<div><br></div>2012/11/15 Eric Dumazet <span dir="ltr">&lt;<a href="mailto:eric.dumazet@gmail.com" target="_blank">eric.dumazet@gmail.com</a>&gt;</span><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im">On Thu, 2012-11-15 at 18:03 +0400, Andrey Vagin wrote:<br>
&gt; From: Andrew Vagin &lt;<a href="mailto:avagin@openvz.org">avagin@openvz.org</a>&gt;<br>
&gt;<br>
&gt; Currently if a socket was repaired with a few packet in a write queue,<br>
&gt; a kernel bug may be triggered:<br>
&gt;<br>
&gt; kernel BUG at net/ipv4/tcp_output.c:2330!<br>
&gt; RIP: 0010:[&lt;ffffffff8155784f&gt;] tcp_retransmit_skb+0x5ff/0x610<br>
&gt;<br>
&gt; According to the initial realization v3.4-rc2-963-gc0e88ff,<br>
&gt; all skb-s should look like already posted. This patch fixes code<br>
&gt; according with this sentence.<br>
&gt;<br>
&gt; Here are three points, which were not done in the initial patch:<br>
&gt; 1. A tcp send head should not be changed<br>
&gt; 2. Initialize TSO state of a skb<br>
&gt; 3. Reset the retransmission time<br>
&gt;<br>
&gt; This patch moves logic from tcp_sendmsg to tcp_write_xmit. A packet<br>
&gt; passes the ussual way, but isn&#39;t sent to network. This patch solves<br>
&gt; all described problems and handles tcp_sendpages.<br>
&gt;<br>
&gt; Cc: Pavel Emelyanov &lt;<a href="mailto:xemul@parallels.com">xemul@parallels.com</a>&gt;<br>
&gt; Cc: &quot;David S. Miller&quot; &lt;<a href="mailto:davem@davemloft.net">davem@davemloft.net</a>&gt;<br>
&gt; Cc: Alexey Kuznetsov &lt;<a href="mailto:kuznet@ms2.inr.ac.ru">kuznet@ms2.inr.ac.ru</a>&gt;<br>
&gt; Cc: James Morris &lt;<a href="mailto:jmorris@namei.org">jmorris@namei.org</a>&gt;<br>
&gt; Cc: Hideaki YOSHIFUJI &lt;<a href="mailto:yoshfuji@linux-ipv6.org">yoshfuji@linux-ipv6.org</a>&gt;<br>
&gt; Cc: Patrick McHardy &lt;<a href="mailto:kaber@trash.net">kaber@trash.net</a>&gt;<br>
&gt; Signed-off-by: Andrey Vagin &lt;<a href="mailto:avagin@openvz.org">avagin@openvz.org</a>&gt;<br>
<br>
</div>Any chance these tcp repair hacks could be done outside of tcp fast<br>
path ?<br><br></blockquote><div> </div><div>Hello Eric,</div><div> </div><div>Do you like the attached patch? I would like to mention that tcp_repair_push is copied code from tcp_write_xmit.<br></div><div><br></div><div>
Thanks.</div></div></div>