skbuff: skb_segment: orphan frags before copying
authorMichael S. Tsirkin <mst@redhat.com>
Mon, 10 Mar 2014 17:28:08 +0000 (19:28 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 11 Jul 2014 12:34:00 +0000 (13:34 +0100)
commit77c01a54cde87eb3bf6685fb44398352f11db3fa
tree6444e61b89e26e82bec2969ea02d34982091f2b3
parent3ee479fddc52bbcb3b215be56673e9784890b486
skbuff: skb_segment: orphan frags before copying

commit 1fd819ecb90cc9b822cd84d3056ddba315d3340f upstream.

skb_segment copies frags around, so we need
to copy them carefully to avoid accessing
user memory after reporting completion to userspace
through a callback.

skb_segment doesn't normally happen on datapath:
TSO needs to be disabled - so disabling zero copy
in this case does not look like a big deal.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 3.2.  As skb_segment() only supports page-frags *or* a
 frag list, there is no need for the additional frag_skb pointer or the
 preparatory renaming.]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/core/skbuff.c