<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/ipv4/tcp_input.c, branch linux-2.6.19.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.19.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.19.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2007-02-05T16:31:45Z</updated>
<entry>
<title>[PATCH] TCP: skb is unexpectedly freed.</title>
<updated>2007-02-05T16:31:45Z</updated>
<author>
<name>Masayuki Nakagawa</name>
</author>
<published>2007-02-02T21:17:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6e3e53bbff845b9c8d77967bf75bcd5325782199'/>
<id>urn:sha1:6e3e53bbff845b9c8d77967bf75bcd5325782199</id>
<content type='text'>
I encountered a kernel panic with my test program, which is a very
simple IPv6 client-server program.

The server side sets IPV6_RECVPKTINFO on a listening socket, and the
client side just sends a message to the server.  Then the kernel panic
occurs on the server.  (If you need the test program, please let me
know. I can provide it.)

This problem happens because a skb is forcibly freed in
tcp_rcv_state_process().

When a socket in listening state(TCP_LISTEN) receives a syn packet,
then tcp_v6_conn_request() will be called from
tcp_rcv_state_process().  If the tcp_v6_conn_request() successfully
returns, the skb would be discarded by __kfree_skb().

However, in case of a listening socket which was already set
IPV6_RECVPKTINFO, an address of the skb will be stored in
treq-&gt;pktopts and a ref count of the skb will be incremented in
tcp_v6_conn_request().  But, even if the skb is still in use, the skb
will be freed.  Then someone still using the freed skb will cause the
kernel panic.

I suggest to use kfree_skb() instead of __kfree_skb().

Signed-off-by: Masayuki Nakagawa &lt;nakagawa.msy@ncos.nec.co.jp&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] TCP: Fix sorting of SACK blocks.</title>
<updated>2007-02-05T16:31:45Z</updated>
<author>
<name>Baruch Even</name>
</author>
<published>2007-02-02T21:16:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=39460cfb25adbafd7141a79b8f51769daacaa0d7'/>
<id>urn:sha1:39460cfb25adbafd7141a79b8f51769daacaa0d7</id>
<content type='text'>
The sorting of SACK blocks actually munges them rather than sort,
causing the TCP stack to ignore some SACK information and breaking the
assumption of ordered SACK blocks after sorting.

The sort takes the data from a second buffer which isn't moved causing
subsequent data moves to occur from the wrong location. The fix is to
use a temporary buffer as a normal sort does.

Signed-off-By: Baruch Even &lt;baruch@ev-en.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
</content>
</entry>
<entry>
<title>[TCP]: Kill warning in tcp_clean_rtx_queue().</title>
<updated>2006-10-04T07:31:08Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2006-10-03T23:49:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=80246ab36ec8baf7d107254adb166baa555a59f8'/>
<id>urn:sha1:80246ab36ec8baf7d107254adb166baa555a59f8</id>
<content type='text'>
GCC can't tell we always initialize 'tv' in all the cases
we actually use it, so explicitly set it up with zeros.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[TCP]: Fix and simplify microsecond rtt sampling</title>
<updated>2006-09-29T01:03:08Z</updated>
<author>
<name>John Heffner</name>
</author>
<published>2006-09-28T21:47:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8ea333eb5da3e3219f570220c56bca09f6f4d25a'/>
<id>urn:sha1:8ea333eb5da3e3219f570220c56bca09f6f4d25a</id>
<content type='text'>
This changes the microsecond RTT sampling so that samples are taken in
the same way that RTT samples are taken for the RTO calculator: on the
last segment acknowledged, and only when the segment hasn't been
retransmitted.

Signed-off-by: John Heffner &lt;jheffner@psc.edu&gt;
Acked-by: Stephen Hemminger &lt;shemminger@osdl.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[TCP] net/ipv4/tcp_input.c: trivial annotations</title>
<updated>2006-09-29T01:02:11Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2006-09-28T01:35:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4f3608b787f471e8e6b9f39c5ed1edde5a2e7d04'/>
<id>urn:sha1:4f3608b787f471e8e6b9f39c5ed1edde5a2e7d04</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[TCP]: struct tcp_sack_block annotations</title>
<updated>2006-09-29T01:02:04Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2006-09-28T01:32:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=269bd27e66037a7932cee6d6aa7ef7defd0bfe38'/>
<id>urn:sha1:269bd27e66037a7932cee6d6aa7ef7defd0bfe38</id>
<content type='text'>
Some of the instances of tcp_sack_block are host-endian, some - net-endian.
Define struct tcp_sack_block_wire identical to struct tcp_sack_block
with u32 replaced with __be32; annotate uses of tcp_sack_block replacing
net-endian ones with tcp_sack_block_wire.  Change is obviously safe since
for cc(1) __be32 is typedefed to u32.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[TCP]: Send ACKs each 2nd received segment.</title>
<updated>2006-09-22T22:19:05Z</updated>
<author>
<name>Alexey Kuznetsov</name>
</author>
<published>2006-09-19T19:52:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1ef9696c909060ccdae3ade245ca88692b49285b'/>
<id>urn:sha1:1ef9696c909060ccdae3ade245ca88692b49285b</id>
<content type='text'>
It does not affect either mss-sized connections (obviously) or
connections controlled by Nagle (because there is only one small
segment in flight).

The idea is to record the fact that a small segment arrives on a
connection, where one small segment has already been received and
still not-ACKed. In this case ACK is forced after tcp_recvmsg() drains
receive buffer.

In other words, it is a "soft" each-2nd-segment ACK, which is enough
to preserve ACK clock even when ABC is enabled.

Signed-off-by: Alexey Kuznetsov &lt;kuznet@ms2.inr.ac.ru&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[TCP]: Fix rcv mss estimate for LRO</title>
<updated>2006-09-22T22:18:44Z</updated>
<author>
<name>Herbert Xu</name>
</author>
<published>2006-08-31T22:11:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ff9b5e0f08cb650d113eef0c654f931c0a7ae730'/>
<id>urn:sha1:ff9b5e0f08cb650d113eef0c654f931c0a7ae730</id>
<content type='text'>
By passing a Linux-generated TSO packet straight back into Linux, Xen
becomes our first LRO user :) Unfortunately, there is at least one spot
in our stack that needs to be changed to cope with this.

The receive MSS estimate is computed from the raw packet size.  This is
broken if the packet is GSO/LRO.  Fortunately the real MSS can be found
in gso_size so we simply need to use that if it is non-zero.

Real LRO NICs should of course set the gso_size field in future.

Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[NET/IPV4/IPV6]: Change some sysctl variables to __read_mostly</title>
<updated>2006-09-22T21:55:03Z</updated>
<author>
<name>Brian Haley</name>
</author>
<published>2006-09-22T21:15:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ab32ea5d8a760e7dd4339634e95d7be24ee5b842'/>
<id>urn:sha1:ab32ea5d8a760e7dd4339634e95d7be24ee5b842</id>
<content type='text'>
Change net/core, ipv4 and ipv6 sysctl variables to __read_mostly.

Couldn't actually measure any performance increase while testing (.3%
I consider noise), but seems like the right thing to do.

Signed-off-by: Brian Haley &lt;brian.haley@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[TCP]: Turn ABC off.</title>
<updated>2006-09-18T06:21:02Z</updated>
<author>
<name>Stephen Hemminger</name>
</author>
<published>2006-09-14T02:51:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b3a8a40da5751525936c88f60bbc6a007f9eee37'/>
<id>urn:sha1:b3a8a40da5751525936c88f60bbc6a007f9eee37</id>
<content type='text'>
Turn Appropriate Byte Count off by default because it unfairly
penalizes applications that do small writes.  Add better documentation
to describe what it is so users will understand why they might want to
turn it on.

Signed-off-by: Stephen Hemminger &lt;shemminger@osdl.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
