<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/include/net/sctp, branch v2.6.27.50</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>sctp: Fix skb_over_panic resulting from multiple invalid parameter errors (CVE-2010-1173) (v4)</title>
<updated>2010-07-05T18:08:46+00:00</updated>
<author>
<name>Neil Horman</name>
<email>nhorman@tuxdriver.com</email>
</author>
<published>2010-04-28T10:30:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b1b7bf1eede2a2d954dc0e4e7db6bb94e7650f60'/>
<id>b1b7bf1eede2a2d954dc0e4e7db6bb94e7650f60</id>
<content type='text'>
commit 5fa782c2f5ef6c2e4f04d3e228412c9b4a4c8809 upstream.

Ok, version 4

Change Notes:
1) Minor cleanups, from Vlads notes

Summary:

Hey-
	Recently, it was reported to me that the kernel could oops in the
following way:

&lt;5&gt; kernel BUG at net/core/skbuff.c:91!
&lt;5&gt; invalid operand: 0000 [#1]
&lt;5&gt; Modules linked in: sctp netconsole nls_utf8 autofs4 sunrpc iptable_filter
ip_tables cpufreq_powersave parport_pc lp parport vmblock(U) vsock(U) vmci(U)
vmxnet(U) vmmemctl(U) vmhgfs(U) acpiphp dm_mirror dm_mod button battery ac md5
ipv6 uhci_hcd ehci_hcd snd_ens1371 snd_rawmidi snd_seq_device snd_pcm_oss
snd_mixer_oss snd_pcm snd_timer snd_page_alloc snd_ac97_codec snd soundcore
pcnet32 mii floppy ext3 jbd ata_piix libata mptscsih mptsas mptspi mptscsi
mptbase sd_mod scsi_mod
&lt;5&gt; CPU:    0
&lt;5&gt; EIP:    0060:[&lt;c02bff27&gt;]    Not tainted VLI
&lt;5&gt; EFLAGS: 00010216   (2.6.9-89.0.25.EL)
&lt;5&gt; EIP is at skb_over_panic+0x1f/0x2d
&lt;5&gt; eax: 0000002c   ebx: c033f461   ecx: c0357d96   edx: c040fd44
&lt;5&gt; esi: c033f461   edi: df653280   ebp: 00000000   esp: c040fd40
&lt;5&gt; ds: 007b   es: 007b   ss: 0068
&lt;5&gt; Process swapper (pid: 0, threadinfo=c040f000 task=c0370be0)
&lt;5&gt; Stack: c0357d96 e0c29478 00000084 00000004 c033f461 df653280 d7883180
e0c2947d
&lt;5&gt;        00000000 00000080 df653490 00000004 de4f1ac0 de4f1ac0 00000004
df653490
&lt;5&gt;        00000001 e0c2877a 08000800 de4f1ac0 df653490 00000000 e0c29d2e
00000004
&lt;5&gt; Call Trace:
&lt;5&gt;  [&lt;e0c29478&gt;] sctp_addto_chunk+0xb0/0x128 [sctp]
&lt;5&gt;  [&lt;e0c2947d&gt;] sctp_addto_chunk+0xb5/0x128 [sctp]
&lt;5&gt;  [&lt;e0c2877a&gt;] sctp_init_cause+0x3f/0x47 [sctp]
&lt;5&gt;  [&lt;e0c29d2e&gt;] sctp_process_unk_param+0xac/0xb8 [sctp]
&lt;5&gt;  [&lt;e0c29e90&gt;] sctp_verify_init+0xcc/0x134 [sctp]
&lt;5&gt;  [&lt;e0c20322&gt;] sctp_sf_do_5_1B_init+0x83/0x28e [sctp]
&lt;5&gt;  [&lt;e0c25333&gt;] sctp_do_sm+0x41/0x77 [sctp]
&lt;5&gt;  [&lt;c01555a4&gt;] cache_grow+0x140/0x233
&lt;5&gt;  [&lt;e0c26ba1&gt;] sctp_endpoint_bh_rcv+0xc5/0x108 [sctp]
&lt;5&gt;  [&lt;e0c2b863&gt;] sctp_inq_push+0xe/0x10 [sctp]
&lt;5&gt;  [&lt;e0c34600&gt;] sctp_rcv+0x454/0x509 [sctp]
&lt;5&gt;  [&lt;e084e017&gt;] ipt_hook+0x17/0x1c [iptable_filter]
&lt;5&gt;  [&lt;c02d005e&gt;] nf_iterate+0x40/0x81
&lt;5&gt;  [&lt;c02e0bb9&gt;] ip_local_deliver_finish+0x0/0x151
&lt;5&gt;  [&lt;c02e0c7f&gt;] ip_local_deliver_finish+0xc6/0x151
&lt;5&gt;  [&lt;c02d0362&gt;] nf_hook_slow+0x83/0xb5
&lt;5&gt;  [&lt;c02e0bb2&gt;] ip_local_deliver+0x1a2/0x1a9
&lt;5&gt;  [&lt;c02e0bb9&gt;] ip_local_deliver_finish+0x0/0x151
&lt;5&gt;  [&lt;c02e103e&gt;] ip_rcv+0x334/0x3b4
&lt;5&gt;  [&lt;c02c66fd&gt;] netif_receive_skb+0x320/0x35b
&lt;5&gt;  [&lt;e0a0928b&gt;] init_stall_timer+0x67/0x6a [uhci_hcd]
&lt;5&gt;  [&lt;c02c67a4&gt;] process_backlog+0x6c/0xd9
&lt;5&gt;  [&lt;c02c690f&gt;] net_rx_action+0xfe/0x1f8
&lt;5&gt;  [&lt;c012a7b1&gt;] __do_softirq+0x35/0x79
&lt;5&gt;  [&lt;c0107efb&gt;] handle_IRQ_event+0x0/0x4f
&lt;5&gt;  [&lt;c01094de&gt;] do_softirq+0x46/0x4d

Its an skb_over_panic BUG halt that results from processing an init chunk in
which too many of its variable length parameters are in some way malformed.

The problem is in sctp_process_unk_param:
if (NULL == *errp)
	*errp = sctp_make_op_error_space(asoc, chunk,
					 ntohs(chunk-&gt;chunk_hdr-&gt;length));

	if (*errp) {
		sctp_init_cause(*errp, SCTP_ERROR_UNKNOWN_PARAM,
				 WORD_ROUND(ntohs(param.p-&gt;length)));
		sctp_addto_chunk(*errp,
			WORD_ROUND(ntohs(param.p-&gt;length)),
				  param.v);

When we allocate an error chunk, we assume that the worst case scenario requires
that we have chunk_hdr-&gt;length data allocated, which would be correct nominally,
given that we call sctp_addto_chunk for the violating parameter.  Unfortunately,
we also, in sctp_init_cause insert a sctp_errhdr_t structure into the error
chunk, so the worst case situation in which all parameters are in violation
requires chunk_hdr-&gt;length+(sizeof(sctp_errhdr_t)*param_count) bytes of data.

The result of this error is that a deliberately malformed packet sent to a
listening host can cause a remote DOS, described in CVE-2010-1173:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2010-1173

I've tested the below fix and confirmed that it fixes the issue.  We move to a
strategy whereby we allocate a fixed size error chunk and ignore errors we don't
have space to report.  Tested by me successfully

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Acked-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 5fa782c2f5ef6c2e4f04d3e228412c9b4a4c8809 upstream.

Ok, version 4

Change Notes:
1) Minor cleanups, from Vlads notes

Summary:

Hey-
	Recently, it was reported to me that the kernel could oops in the
following way:

&lt;5&gt; kernel BUG at net/core/skbuff.c:91!
&lt;5&gt; invalid operand: 0000 [#1]
&lt;5&gt; Modules linked in: sctp netconsole nls_utf8 autofs4 sunrpc iptable_filter
ip_tables cpufreq_powersave parport_pc lp parport vmblock(U) vsock(U) vmci(U)
vmxnet(U) vmmemctl(U) vmhgfs(U) acpiphp dm_mirror dm_mod button battery ac md5
ipv6 uhci_hcd ehci_hcd snd_ens1371 snd_rawmidi snd_seq_device snd_pcm_oss
snd_mixer_oss snd_pcm snd_timer snd_page_alloc snd_ac97_codec snd soundcore
pcnet32 mii floppy ext3 jbd ata_piix libata mptscsih mptsas mptspi mptscsi
mptbase sd_mod scsi_mod
&lt;5&gt; CPU:    0
&lt;5&gt; EIP:    0060:[&lt;c02bff27&gt;]    Not tainted VLI
&lt;5&gt; EFLAGS: 00010216   (2.6.9-89.0.25.EL)
&lt;5&gt; EIP is at skb_over_panic+0x1f/0x2d
&lt;5&gt; eax: 0000002c   ebx: c033f461   ecx: c0357d96   edx: c040fd44
&lt;5&gt; esi: c033f461   edi: df653280   ebp: 00000000   esp: c040fd40
&lt;5&gt; ds: 007b   es: 007b   ss: 0068
&lt;5&gt; Process swapper (pid: 0, threadinfo=c040f000 task=c0370be0)
&lt;5&gt; Stack: c0357d96 e0c29478 00000084 00000004 c033f461 df653280 d7883180
e0c2947d
&lt;5&gt;        00000000 00000080 df653490 00000004 de4f1ac0 de4f1ac0 00000004
df653490
&lt;5&gt;        00000001 e0c2877a 08000800 de4f1ac0 df653490 00000000 e0c29d2e
00000004
&lt;5&gt; Call Trace:
&lt;5&gt;  [&lt;e0c29478&gt;] sctp_addto_chunk+0xb0/0x128 [sctp]
&lt;5&gt;  [&lt;e0c2947d&gt;] sctp_addto_chunk+0xb5/0x128 [sctp]
&lt;5&gt;  [&lt;e0c2877a&gt;] sctp_init_cause+0x3f/0x47 [sctp]
&lt;5&gt;  [&lt;e0c29d2e&gt;] sctp_process_unk_param+0xac/0xb8 [sctp]
&lt;5&gt;  [&lt;e0c29e90&gt;] sctp_verify_init+0xcc/0x134 [sctp]
&lt;5&gt;  [&lt;e0c20322&gt;] sctp_sf_do_5_1B_init+0x83/0x28e [sctp]
&lt;5&gt;  [&lt;e0c25333&gt;] sctp_do_sm+0x41/0x77 [sctp]
&lt;5&gt;  [&lt;c01555a4&gt;] cache_grow+0x140/0x233
&lt;5&gt;  [&lt;e0c26ba1&gt;] sctp_endpoint_bh_rcv+0xc5/0x108 [sctp]
&lt;5&gt;  [&lt;e0c2b863&gt;] sctp_inq_push+0xe/0x10 [sctp]
&lt;5&gt;  [&lt;e0c34600&gt;] sctp_rcv+0x454/0x509 [sctp]
&lt;5&gt;  [&lt;e084e017&gt;] ipt_hook+0x17/0x1c [iptable_filter]
&lt;5&gt;  [&lt;c02d005e&gt;] nf_iterate+0x40/0x81
&lt;5&gt;  [&lt;c02e0bb9&gt;] ip_local_deliver_finish+0x0/0x151
&lt;5&gt;  [&lt;c02e0c7f&gt;] ip_local_deliver_finish+0xc6/0x151
&lt;5&gt;  [&lt;c02d0362&gt;] nf_hook_slow+0x83/0xb5
&lt;5&gt;  [&lt;c02e0bb2&gt;] ip_local_deliver+0x1a2/0x1a9
&lt;5&gt;  [&lt;c02e0bb9&gt;] ip_local_deliver_finish+0x0/0x151
&lt;5&gt;  [&lt;c02e103e&gt;] ip_rcv+0x334/0x3b4
&lt;5&gt;  [&lt;c02c66fd&gt;] netif_receive_skb+0x320/0x35b
&lt;5&gt;  [&lt;e0a0928b&gt;] init_stall_timer+0x67/0x6a [uhci_hcd]
&lt;5&gt;  [&lt;c02c67a4&gt;] process_backlog+0x6c/0xd9
&lt;5&gt;  [&lt;c02c690f&gt;] net_rx_action+0xfe/0x1f8
&lt;5&gt;  [&lt;c012a7b1&gt;] __do_softirq+0x35/0x79
&lt;5&gt;  [&lt;c0107efb&gt;] handle_IRQ_event+0x0/0x4f
&lt;5&gt;  [&lt;c01094de&gt;] do_softirq+0x46/0x4d

Its an skb_over_panic BUG halt that results from processing an init chunk in
which too many of its variable length parameters are in some way malformed.

The problem is in sctp_process_unk_param:
if (NULL == *errp)
	*errp = sctp_make_op_error_space(asoc, chunk,
					 ntohs(chunk-&gt;chunk_hdr-&gt;length));

	if (*errp) {
		sctp_init_cause(*errp, SCTP_ERROR_UNKNOWN_PARAM,
				 WORD_ROUND(ntohs(param.p-&gt;length)));
		sctp_addto_chunk(*errp,
			WORD_ROUND(ntohs(param.p-&gt;length)),
				  param.v);

When we allocate an error chunk, we assume that the worst case scenario requires
that we have chunk_hdr-&gt;length data allocated, which would be correct nominally,
given that we call sctp_addto_chunk for the violating parameter.  Unfortunately,
we also, in sctp_init_cause insert a sctp_errhdr_t structure into the error
chunk, so the worst case situation in which all parameters are in violation
requires chunk_hdr-&gt;length+(sizeof(sctp_errhdr_t)*param_count) bytes of data.

The result of this error is that a deliberately malformed packet sent to a
listening host can cause a remote DOS, described in CVE-2010-1173:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2010-1173

I've tested the below fix and confirmed that it fixes the issue.  We move to a
strategy whereby we allocate a fixed size error chunk and ignore errors we don't
have space to report.  Tested by me successfully

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Acked-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>sctp: Fix crc32c calculations on big-endian arhes.</title>
<updated>2009-02-17T17:46:19+00:00</updated>
<author>
<name>Vlad Yasevich</name>
<email>vladislav.yasevich@hp.com</email>
</author>
<published>2009-01-22T22:52:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d8e466e2cc8e9e4e033c9994f2d598276d60d409'/>
<id>d8e466e2cc8e9e4e033c9994f2d598276d60d409</id>
<content type='text'>
[ Upstream commit 9c5ff5f75d0d0a1c7928ecfae3f38418b51a88e3 ]

crc32c algorithm provides a byteswaped result.  On little-endian
arches, the result ends up in big-endian/network byte order.
On big-endinan arches, the result ends up in little-endian
order and needs to be byte swapped again.  Thus calling cpu_to_le32
gives the right output.

Tested-by: Jukka Taimisto &lt;jukka.taimisto@mail.suomi.net&gt;
Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 9c5ff5f75d0d0a1c7928ecfae3f38418b51a88e3 ]

crc32c algorithm provides a byteswaped result.  On little-endian
arches, the result ends up in big-endian/network byte order.
On big-endinan arches, the result ends up in little-endian
order and needs to be byte swapped again.  Thus calling cpu_to_le32
gives the right output.

Tested-by: Jukka Taimisto &lt;jukka.taimisto@mail.suomi.net&gt;
Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>sctp: Fix kernel panic while process protocol violation parameter</title>
<updated>2008-09-30T12:32:24+00:00</updated>
<author>
<name>Wei Yongjun</name>
<email>yjwei@cn.fujitsu.com</email>
</author>
<published>2008-09-30T12:32:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ba0166708ef4da7eeb61dd92bbba4d5a749d6561'/>
<id>ba0166708ef4da7eeb61dd92bbba4d5a749d6561</id>
<content type='text'>
Since call to function sctp_sf_abort_violation() need paramter 'arg' with
'struct sctp_chunk' type, it will read the chunk type and chunk length from
the chunk_hdr member of chunk. But call to sctp_sf_violation_paramlen()
always with 'struct sctp_paramhdr' type's parameter, it will be passed to
sctp_sf_abort_violation(). This may cause kernel panic.

   sctp_sf_violation_paramlen()
     |-- sctp_sf_abort_violation()
        |-- sctp_make_abort_violation()

This patch fixed this problem. This patch also fix two place which called
sctp_sf_violation_paramlen() with wrong paramter type.

Signed-off-by: Wei Yongjun &lt;yjwei@cn.fujitsu.com&gt;
Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since call to function sctp_sf_abort_violation() need paramter 'arg' with
'struct sctp_chunk' type, it will read the chunk type and chunk length from
the chunk_hdr member of chunk. But call to sctp_sf_violation_paramlen()
always with 'struct sctp_paramhdr' type's parameter, it will be passed to
sctp_sf_abort_violation(). This may cause kernel panic.

   sctp_sf_violation_paramlen()
     |-- sctp_sf_abort_violation()
        |-- sctp_make_abort_violation()

This patch fixed this problem. This patch also fix two place which called
sctp_sf_violation_paramlen() with wrong paramter type.

Signed-off-by: Wei Yongjun &lt;yjwei@cn.fujitsu.com&gt;
Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>sctp: Drop ipfargok in sctp_xmit function</title>
<updated>2008-08-04T04:15:08+00:00</updated>
<author>
<name>Herbert Xu</name>
<email>herbert@gondor.apana.org.au</email>
</author>
<published>2008-08-04T04:15:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f880374c2fe37aad3fa62253a4bc125d7a933aad'/>
<id>f880374c2fe37aad3fa62253a4bc125d7a933aad</id>
<content type='text'>
The ipfragok flag controls whether the packet may be fragmented
either on the local host on beyond.  The latter is only valid on
IPv4.

In fact, we never want to do the latter even on IPv4 when PMTU is
enabled.  This is because even though we can't fragment packets
within SCTP due to the prtocol's inherent faults, we can still
fragment it at IP layer.  By setting the DF bit we will improve
the PMTU process.

RFC 2960 only says that we SHOULD clear the DF bit in this case,
so we're compliant even if we set the DF bit.  In fact RFC 4960
no longer has this statement.

Once we make this change, we only need to control the local
fragmentation.  There is already a bit in the skb which controls
that, local_df.  So this patch sets that instead of using the
ipfragok argument.

The only complication is that there isn't a struct sock object
per transport, so for IPv4 we have to resort to changing the
pmtudisc field for every packet.  This should be safe though
as the protocol is single-threaded.

Note that after this patch we can remove ipfragok from the rest
of the stack too.

Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The ipfragok flag controls whether the packet may be fragmented
either on the local host on beyond.  The latter is only valid on
IPv4.

In fact, we never want to do the latter even on IPv4 when PMTU is
enabled.  This is because even though we can't fragment packets
within SCTP due to the prtocol's inherent faults, we can still
fragment it at IP layer.  By setting the DF bit we will improve
the PMTU process.

RFC 2960 only says that we SHOULD clear the DF bit in this case,
so we're compliant even if we set the DF bit.  In fact RFC 4960
no longer has this statement.

Once we make this change, we only need to control the local
fragmentation.  There is already a bit in the skb which controls
that, local_df.  So this patch sets that instead of using the
ipfragok argument.

The only complication is that there isn't a struct sock object
per transport, so for IPv4 we have to resort to changing the
pmtudisc field for every packet.  This should be safe though
as the protocol is single-threaded.

Note that after this patch we can remove ipfragok from the rest
of the stack too.

Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>sctp: make sctp_outq_flush() static</title>
<updated>2008-07-22T21:20:45+00:00</updated>
<author>
<name>Adrian Bunk</name>
<email>bunk@kernel.org</email>
</author>
<published>2008-07-22T21:20:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=abd0b198ea699578c3c3476d646c91842e19dbd2'/>
<id>abd0b198ea699578c3c3476d646c91842e19dbd2</id>
<content type='text'>
sctp_outq_flush() can now become static.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
sctp_outq_flush() can now become static.

Signed-off-by: Adrian Bunk &lt;bunk@kernel.org&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>sctp: remove unnecessary byteshifting, calculate directly in big-endian</title>
<updated>2008-07-19T06:07:09+00:00</updated>
<author>
<name>Harvey Harrison</name>
<email>harvey.harrison@gmail.com</email>
</author>
<published>2008-07-19T06:07:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=336d3262df71fcd2661180bb35d5ea41b4cbca58'/>
<id>336d3262df71fcd2661180bb35d5ea41b4cbca58</id>
<content type='text'>
Signed-off-by: Harvey Harrison &lt;harvey.harrison@gmail.com&gt;
Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Harvey Harrison &lt;harvey.harrison@gmail.com&gt;
Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>sctp: Support ipv6only AF_INET6 sockets.</title>
<updated>2008-07-19T06:05:40+00:00</updated>
<author>
<name>Vlad Yasevich</name>
<email>vladislav.yasevich@hp.com</email>
</author>
<published>2008-07-19T06:05:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=7dab83de50c7b2b7ceac695a0b56fa6c0f95b0bc'/>
<id>7dab83de50c7b2b7ceac695a0b56fa6c0f95b0bc</id>
<content type='text'>
Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>sctp: Follow security requirement of responding with 1 packet</title>
<updated>2008-06-19T23:08:18+00:00</updated>
<author>
<name>Vlad Yasevich</name>
<email>vladislav.yasevich@hp.com</email>
</author>
<published>2008-06-19T23:08:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2e3216cd54b142ba605e87522e15f42e0c4e3996'/>
<id>2e3216cd54b142ba605e87522e15f42e0c4e3996</id>
<content type='text'>
RFC 4960, Section 11.4. Protection of Non-SCTP-Capable Hosts

When an SCTP stack receives a packet containing multiple control or
DATA chunks and the processing of the packet requires the sending of
multiple chunks in response, the sender of the response chunk(s) MUST
NOT send more than one packet.  If bundling is supported, multiple
response chunks that fit into a single packet MAY be bundled together
into one single response packet.  If bundling is not supported, then
the sender MUST NOT send more than one response chunk and MUST
discard all other responses.  Note that this rule does NOT apply to a
SACK chunk, since a SACK chunk is, in itself, a response to DATA and
a SACK does not require a response of more DATA.

We implement this by not servicing our outqueue until we reach the end
of the packet.  This enables maximum bundling.  We also identify
'response' chunks and make sure that we only send 1 packet when sending
such chunks.

Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
RFC 4960, Section 11.4. Protection of Non-SCTP-Capable Hosts

When an SCTP stack receives a packet containing multiple control or
DATA chunks and the processing of the packet requires the sending of
multiple chunks in response, the sender of the response chunk(s) MUST
NOT send more than one packet.  If bundling is supported, multiple
response chunks that fit into a single packet MAY be bundled together
into one single response packet.  If bundling is not supported, then
the sender MUST NOT send more than one response chunk and MUST
discard all other responses.  Note that this rule does NOT apply to a
SACK chunk, since a SACK chunk is, in itself, a response to DATA and
a SACK does not require a response of more DATA.

We implement this by not servicing our outqueue until we reach the end
of the packet.  This enables maximum bundling.  We also identify
'response' chunks and make sure that we only send 1 packet when sending
such chunks.

Signed-off-by: Vlad Yasevich &lt;vladislav.yasevich@hp.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>sctp: Kill SCTP_SOCK_SLEEP_{PRE,POST}, unused.</title>
<updated>2008-06-17T07:40:36+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2008-06-17T07:40:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8ce9c6ede1504d29eead67862edc96c03dd4d0a2'/>
<id>8ce9c6ede1504d29eead67862edc96c03dd4d0a2</id>
<content type='text'>
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6</title>
<updated>2008-06-10T09:22:26+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2008-06-10T09:22:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=65b53e4cc90e59936733b3b95b9451d2ca47528d'/>
<id>65b53e4cc90e59936733b3b95b9451d2ca47528d</id>
<content type='text'>
Conflicts:

	drivers/net/tg3.c
	drivers/net/wireless/rt2x00/rt2x00dev.c
	net/mac80211/ieee80211_i.h
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:

	drivers/net/tg3.c
	drivers/net/wireless/rt2x00/rt2x00dev.c
	net/mac80211/ieee80211_i.h
</pre>
</div>
</content>
</entry>
</feed>
