linux/net
Herbert Xu 2fdba6b085 [IPV4/IPV6] Ensure all frag_list members have NULL sk
Having frag_list members which holds wmem of an sk leads to nightmares
with partially cloned frag skb's.  The reason is that once you unleash
a skb with a frag_list that has individual sk ownerships into the stack
you can never undo those ownerships safely as they may have been cloned
by things like netfilter.  Since we have to undo them in order to make
skb_linearize happy this approach leads to a dead-end.

So let's go the other way and make this an invariant:

	For any skb on a frag_list, skb->sk must be NULL.

That is, the socket ownership always belongs to the head skb.
It turns out that the implementation is actually pretty simple.

The above invariant is actually violated in the following patch
for a short duration inside ip_fragment.  This is OK because the
offending frag_list member is either destroyed at the end of the
slow path without being sent anywhere, or it is detached from
the frag_list before being sent.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2005-05-18 22:52:33 -07:00
..
802 [PATCH] update Ross Biro bouncing email address 2005-05-05 16:36:49 -07:00
8021q [PATCH] misc verify_area cleanups 2005-05-01 08:59:08 -07:00
appletalk [ATALK]: Add alloc_ltalkdev(). 2005-05-05 14:25:59 -07:00
atm [PATCH] misc verify_area cleanups 2005-05-01 08:59:08 -07:00
ax25 [AX25] Introduce ax25_type_trans 2005-04-24 18:53:06 -07:00
bluetooth [NET]: kill gratitious includes of major.h 2005-04-25 21:40:39 -07:00
bridge [PATCH] kobject/hotplug split - net bridge 2005-04-18 21:57:37 -07:00
core [PATCH] update Ross Biro bouncing email address 2005-05-05 16:36:49 -07:00
decnet [DECNET]: Fix build after C99 netlink initializer change. 2005-05-05 13:13:29 -07:00
econet Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ethernet [PATCH] update Ross Biro bouncing email address 2005-05-05 16:36:49 -07:00
ipv4 [IPV4/IPV6] Ensure all frag_list members have NULL sk 2005-05-18 22:52:33 -07:00
ipv6 [IPV4/IPV6] Ensure all frag_list members have NULL sk 2005-05-18 22:52:33 -07:00
ipx Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irda [PATCH] ISA DMA Kconfig fixes - part 4 (irda) 2005-05-04 07:33:14 -07:00
key Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
lapb Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
llc Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
netlink Merge with master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 2005-05-05 13:59:37 +01:00
netrom Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
packet [PATCH] update Ross Biro bouncing email address 2005-05-05 16:36:49 -07:00
rose Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rxrpc Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sched [PKT_SCHED]: Action repeat 2005-05-03 16:29:13 -07:00
sctp [SCTP] Fix SCTP sendbuffer accouting. 2005-04-28 12:02:04 -07:00
sunrpc [PATCH] DocBook: changes and extensions to the kernel documentation 2005-05-01 08:59:25 -07:00
unix [NET]: kill gratitious includes of major.h 2005-04-25 21:40:39 -07:00
wanrouter [PATCH] misc verify_area cleanups 2005-05-01 08:59:08 -07:00
x25 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfrm [XFRM]: skb_cow_data() does not set proper owner for new skbs. 2005-05-18 22:51:45 -07:00
compat.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07: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
nonet.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
socket.c [PATCH] update Ross Biro bouncing email address 2005-05-05 16:36:49 -07:00
sysctl_net.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
TUNABLE Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00