<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/net/dccp/input.c, branch v3.0.36</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/net/dccp/input.c?h=v3.0.36</id>
<link rel='self' href='https://git.amat.us/linux/atom/net/dccp/input.c?h=v3.0.36'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2011-03-02T07:02:07Z</updated>
<entry>
<title>dccp: fix oops on Reset after close</title>
<updated>2011-03-02T07:02:07Z</updated>
<author>
<name>Gerrit Renker</name>
<email>gerrit@erg.abdn.ac.uk</email>
</author>
<published>2011-03-02T07:02:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=720dc34bbbe9493c7bd48b2243058b4e447a929d'/>
<id>urn:sha1:720dc34bbbe9493c7bd48b2243058b4e447a929d</id>
<content type='text'>
This fixes a bug in the order of dccp_rcv_state_process() that still permitted
reception even after closing the socket. A Reset after close thus causes a NULL
pointer dereference by not preventing operations on an already torn-down socket.

 dccp_v4_do_rcv() 
	|
	| state other than OPEN
	v
 dccp_rcv_state_process()
	|
	| DCCP_PKT_RESET
	v
 dccp_rcv_reset()
	|
	v
 dccp_time_wait()

 WARNING: at net/ipv4/inet_timewait_sock.c:141 __inet_twsk_hashdance+0x48/0x128()
 Modules linked in: arc4 ecb carl9170 rt2870sta(C) mac80211 r8712u(C) crc_ccitt ah
 [&lt;c0038850&gt;] (unwind_backtrace+0x0/0xec) from [&lt;c0055364&gt;] (warn_slowpath_common)
 [&lt;c0055364&gt;] (warn_slowpath_common+0x4c/0x64) from [&lt;c0055398&gt;] (warn_slowpath_n)
 [&lt;c0055398&gt;] (warn_slowpath_null+0x1c/0x24) from [&lt;c02b72d0&gt;] (__inet_twsk_hashd)
 [&lt;c02b72d0&gt;] (__inet_twsk_hashdance+0x48/0x128) from [&lt;c031caa0&gt;] (dccp_time_wai)
 [&lt;c031caa0&gt;] (dccp_time_wait+0x40/0xc8) from [&lt;c031c15c&gt;] (dccp_rcv_state_proces)
 [&lt;c031c15c&gt;] (dccp_rcv_state_process+0x120/0x538) from [&lt;c032609c&gt;] (dccp_v4_do_)
 [&lt;c032609c&gt;] (dccp_v4_do_rcv+0x11c/0x14c) from [&lt;c0286594&gt;] (release_sock+0xac/0)
 [&lt;c0286594&gt;] (release_sock+0xac/0x110) from [&lt;c031fd34&gt;] (dccp_close+0x28c/0x380)
 [&lt;c031fd34&gt;] (dccp_close+0x28c/0x380) from [&lt;c02d9a78&gt;] (inet_release+0x64/0x70)

The fix is by testing the socket state first. Receiving a packet in Closed state
now also produces the required "No connection" Reset reply of RFC 4340, 8.3.1.

Reported-and-tested-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Cc: stable@kernel.org
Signed-off-by: Gerrit Renker &lt;gerrit@erg.abdn.ac.uk&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>dccp: fix return value for sequence-invalid packets</title>
<updated>2011-01-07T11:22:43Z</updated>
<author>
<name>Samuel Jero</name>
<email>sj323707@ohio.edu</email>
</author>
<published>2010-12-30T11:15:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2cf5be93d1b704f342ad423a49f0e78d73939e66'/>
<id>urn:sha1:2cf5be93d1b704f342ad423a49f0e78d73939e66</id>
<content type='text'>
Currently dccp_check_seqno returns 0 (indicating a valid packet) if the
acknowledgment number is out of bounds and the sync that RFC 4340 mandates at
this point is currently being rate-limited. This function should return -1,
indicating an invalid packet.

Signed-off-by: Samuel Jero &lt;sj323707@ohio.edu&gt;
Acked-by: Gerrit Renker &lt;gerrit@erg.abdn.ac.uk&gt;
</content>
</entry>
<entry>
<title>Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6</title>
<updated>2010-12-08T21:47:38Z</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2010-12-08T21:15:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fe6c791570efe717946ea7b7dd50aec96b70d551'/>
<id>urn:sha1:fe6c791570efe717946ea7b7dd50aec96b70d551</id>
<content type='text'>
Conflicts:
	drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
	net/llc/af_llc.c
</content>
</entry>
<entry>
<title>dccp: fix error in updating the GAR</title>
<updated>2010-11-28T19:29:27Z</updated>
<author>
<name>Gerrit Renker</name>
<email>gerrit@erg.abdn.ac.uk</email>
</author>
<published>2010-11-23T02:36:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0ac78870220b6e0ac74dd9292bcfa7b18718babd'/>
<id>urn:sha1:0ac78870220b6e0ac74dd9292bcfa7b18718babd</id>
<content type='text'>
This fixes a bug in updating the Greatest Acknowledgment number Received (GAR):
the current implementation does not track the greatest received value -
lower values in the range AWL..AWH (RFC 4340, 7.5.1) erase higher ones.

Signed-off-by: Gerrit Renker &lt;gerrit@erg.abdn.ac.uk&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>dccp ccid-2: Consolidate Ack-Vector processing within main DCCP module</title>
<updated>2010-11-15T06:11:59Z</updated>
<author>
<name>Gerrit Renker</name>
<email>gerrit@erg.abdn.ac.uk</email>
</author>
<published>2010-11-14T16:25:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=18219463c884bfdb7954d298b9edb5194b14d621'/>
<id>urn:sha1:18219463c884bfdb7954d298b9edb5194b14d621</id>
<content type='text'>
This aggregates Ack Vector processing (handling input and clearing old state)
into one function, for the following reasons and benefits:
 * all Ack Vector-specific processing is now in one place;
 * duplicated code is removed;
 * ensuring sanity: from an Ack Vector point of view, it is better to clear the
                    old state first before entering new state;
 * Ack Event handling happens mostly within the CCIDs, not the main DCCP module.

Signed-off-by: Gerrit Renker &lt;gerrit@erg.abdn.ac.uk&gt;
</content>
</entry>
<entry>
<title>dccp ccid-2: Algorithm to update buffer state</title>
<updated>2010-11-15T06:11:59Z</updated>
<author>
<name>Gerrit Renker</name>
<email>gerrit@erg.abdn.ac.uk</email>
</author>
<published>2010-11-14T16:25:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a'/>
<id>urn:sha1:5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a</id>
<content type='text'>
This provides a routine to consistently update the buffer state when the
peer acknowledges receipt of Ack Vectors; updating state in the list of Ack
Vectors as well as in the circular buffer.

While based on RFC 4340, several additional (and necessary) precautions were
added to protect the consistency of the buffer state. These additions are
essential, since analysis and experience showed that the basic algorithm was
insufficient for this task (which lead to problems that were hard to debug).

The algorithm now
 * deals with HC-sender acknowledging to HC-receiver and vice versa,
 * keeps track of the last unacknowledged but received seqno in tail_ackno,
 * has special cases to reset the overflow condition when appropriate,
 * is protected against receiving older information (would mess up buffer state).

Signed-off-by: Gerrit Renker &lt;gerrit@erg.abdn.ac.uk&gt;
</content>
</entry>
<entry>
<title>dccp ccid-2: Ack Vector interface clean-up</title>
<updated>2010-11-10T20:20:07Z</updated>
<author>
<name>Gerrit Renker</name>
<email>gerrit@erg.abdn.ac.uk</email>
</author>
<published>2010-11-10T20:20:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f17a37c9b8c4b32c01e501a84fa6f30e344c6110'/>
<id>urn:sha1:f17a37c9b8c4b32c01e501a84fa6f30e344c6110</id>
<content type='text'>
This patch brings the Ack Vector interface up to date. Its main purpose is
to lay the basis for the subsequent patches of this set, which will use the
new data structure fields and routines.

There are no real algorithmic changes, rather an adaptation:

 (1) Replaced the static Ack Vector size (2) with a #define so that it can
     be adapted (with low loss / Ack Ratio, a value of 1 works, so 2 seems
     to be sufficient for the moment) and added a solution so that computing
     the ECN nonce will continue to work - even with larger Ack Vectors.

 (2) Replaced the #defines for Ack Vector states with a complete enum.

 (3) Replaced #defines to compute Ack Vector length and state with general
     purpose routines (inlines), and updated code to use these.

 (4) Added a `tail' field (conversion to circular buffer in subsequent patch).

 (5) Updated the (outdated) documentation for Ack Vector struct.

 (6) All sequence number containers now trimmed to 48 bits.

 (7) Removal of unused bits:
     * removed dccpav_ack_nonce from struct dccp_ackvec, since this is already
       redundantly stored in the `dccpavr_ack_nonce' (of Ack Vector record);
     * removed Elapsed Time for Ack Vectors (it was nowhere used);
     * replaced semantics of dccpavr_sent_len with dccpavr_ack_runlen, since
       the code needs to be able to remember the old run length;
     * reduced the de-/allocation routines (redundant / duplicate tests).

Signed-off-by: Gerrit Renker &lt;gerrit@erg.abdn.ac.uk&gt;
</content>
</entry>
<entry>
<title>dccp: cosmetics - warning format</title>
<updated>2010-10-12T04:57:43Z</updated>
<author>
<name>Gerrit Renker</name>
<email>gerrit@erg.abdn.ac.uk</email>
</author>
<published>2010-10-11T18:44:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2f34b32977ade4249601f35f7eb0cdd56b4e0f89'/>
<id>urn:sha1:2f34b32977ade4249601f35f7eb0cdd56b4e0f89</id>
<content type='text'>
This  omits the redundant "DCCP:" in warning messages, since DCCP_WARN() already
echoes the function name, avoiding messages like

   kernel: [10988.766503] dccp_close: DCCP: ABORT -- 209 bytes unread

Signed-off-by: Gerrit Renker &lt;gerrit@erg.abdn.ac.uk&gt;
</content>
</entry>
<entry>
<title>dccp: fix the adjustments to AWL and SWL</title>
<updated>2010-10-12T04:57:40Z</updated>
<author>
<name>Gerrit Renker</name>
<email>gerrit@erg.abdn.ac.uk</email>
</author>
<published>2010-10-11T18:35:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0b53d4604ac2b4f2faa9a62a04ea9b383ad2efe0'/>
<id>urn:sha1:0b53d4604ac2b4f2faa9a62a04ea9b383ad2efe0</id>
<content type='text'>
This fixes a problem and a potential loophole with regard to seqno/ackno
validity: currently the initial adjustments to AWL/SWL are only performed
once at the begin of the connection, during the handshake.

Since the Sequence Window feature is always greater than Wmin=32 (7.5.2),
it is however necessary to perform these adjustments at least for the first
W/W' (variables as per 7.5.1) packets in the lifetime of a connection.

This requirement is complicated by the fact that W/W' can change at any time
during the lifetime of a connection.

Therefore it is better to perform that safety check each time SWL/AWL are
updated, as implemented by the patch.

A second problem solved by this patch is that the remote/local Sequence Window
feature values (which set the bounds for AWL/SWL/SWH) are undefined until the
feature negotiation has completed.

During the initial handshake we have more stringent sequence number protection;
the changes added by this patch effect that {A,S}W{L,H} are within the correct
bounds at the instant that feature negotiation completes (since the SeqWin
feature activation handlers call dccp_update_gsr/gss()).

Signed-off-by: Gerrit Renker &lt;gerrit@erg.abdn.ac.uk&gt;
</content>
</entry>
<entry>
<title>dccp: make implementation of Syn-RTT symmetric</title>
<updated>2010-06-26T04:33:15Z</updated>
<author>
<name>Gerrit Renker</name>
<email>gerrit@erg.abdn.ac.uk</email>
</author>
<published>2010-06-22T01:14:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=59b80802a8a18b64d38b51aa168253684b2649d5'/>
<id>urn:sha1:59b80802a8a18b64d38b51aa168253684b2649d5</id>
<content type='text'>
This patch is thanks to Andre Noll who reported the issue and helped testing.

The Syn-RTT sampled during the initial handshake currently only works for
the client sending the DCCP-Request. TFRC penalizes the absence of an RTT
sample with a very slow initial speed (1 packet per second), which delays
slow-start significantly, resulting in sluggish performance.

This patch mirrors the "Syn RTT" principle by adding a timestamp also onto
the DCCP-Response, producing an RTT sample  when the (Data)Ack completing
the handshake arrives.

Also changed the documentation to 'TFRC' since Syn RTTs are also used by CCID-4.

Signed-off-by: Gerrit Renker &lt;gerrit@erg.abdn.ac.uk&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
