1
linux/net/sctp
Vladislav Yasevich 672e7cca17 [SCTP]: Prevent possible infinite recursion with multiple bundled DATA.
There is a rare situation that causes lksctp to go into infinite recursion
and crash the system.  The trigger is a packet that contains at least the
first two DATA fragments of a message bundled together. The recursion is
triggered when the user data buffer is smaller that the full data message.
The problem is that we clone the skb for every fragment in the message.
When reassembling the full message, we try to link skbs from the "first
fragment" clone using the frag_list. However, since the frag_list is shared
between two clones in this rare situation, we end up setting the frag_list
pointer of the second fragment to point to itself.  This causes
sctp_skb_pull() to potentially recurse indefinitely.

Proposed solution is to make a copy of the skb when attempting to link
things using frag_list.

Signed-off-by: Vladislav Yasevich <vladsilav.yasevich@hp.com>
Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-05-05 17:03:49 -07:00
..
associola.c [SCTP]: Update SCTP_PEER_ADDR_PARAMS socket option to the latest api draft. 2006-01-03 13:11:11 -08:00
bind_addr.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
chunk.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
command.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
crc32c.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
debug.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
endpointola.c [SCTP]: Include ulpevents in socket receive buffer accounting. 2005-11-11 16:08:24 -08:00
input.c [SCTP]: Fix up sctp_rcv return value 2006-03-25 01:25:29 -08:00
inqueue.c [SCTP]: Allow spillover of receive buffer to avoid deadlock. 2006-05-05 17:02:09 -07:00
ipv6.c [NET]: Identation & other cleanups related to compat_[gs]etsockopt cset 2006-03-20 22:48:35 -08:00
Kconfig Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
objcnt.c [SCTP]: Audit return code of create_proc_* 2005-07-18 13:38:07 -07:00
output.c [SCTP]: Fix 'fast retransmit' to send a TSN only once. 2006-02-02 16:57:31 -08:00
outqueue.c [SCTP]: Fix 'fast retransmit' to send a TSN only once. 2006-02-02 16:57:31 -08:00
primitive.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
proc.c [PATCH] for_each_possible_cpu: network codes 2006-04-11 06:18:31 -07:00
protocol.c [NET]: Identation & other cleanups related to compat_[gs]etsockopt cset 2006-03-20 22:48:35 -08:00
sm_make_chunk.c [SCTP]: Fix machine check/connection hang on IA64. 2006-01-17 11:55:57 -08:00
sm_sideeffect.c [SCTP]: Fix bad sysctl formatting of SCTP timeout values on 64-bit m/cs. 2006-01-17 11:55:17 -08:00
sm_statefuns.c [SCTP]: Allow spillover of receive buffer to avoid deadlock. 2006-05-05 17:02:09 -07:00
sm_statetable.c [SCTP] sctp_connectx() API support 2005-06-20 13:14:57 -07:00
socket.c [PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications 2006-03-25 08:22:56 -08:00
ssnmap.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
sysctl.c [SCTP]: Fix bad sysctl formatting of SCTP timeout values on 64-bit m/cs. 2006-01-17 11:55:17 -08:00
transport.c [SCTP]: Fix bad sysctl formatting of SCTP timeout values on 64-bit m/cs. 2006-01-17 11:55:17 -08:00
tsnmap.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ulpevent.c [SCTP]: Include ulpevents in socket receive buffer accounting. 2005-11-11 16:08:24 -08:00
ulpqueue.c [SCTP]: Prevent possible infinite recursion with multiple bundled DATA. 2006-05-05 17:03:49 -07:00