summaryrefslogtreecommitdiffstats
path: root/net/sctp/outqueue.c
diff options
context:
space:
mode:
authorHerbert Xu2013-11-21 20:10:04 +0100
committerDavid S. Miller2013-11-21 20:11:50 +0100
commit9d8506cc2d7ea1f911c72c100193a3677f6668c3 (patch)
tree33eec3f9e567cbf3141f7a3824559beb0a7cea3a /net/sctp/outqueue.c
parentgenetlink: fix genl_set_err() group ID (diff)
downloadkernel-qcow2-linux-9d8506cc2d7ea1f911c72c100193a3677f6668c3.tar.gz
kernel-qcow2-linux-9d8506cc2d7ea1f911c72c100193a3677f6668c3.tar.xz
kernel-qcow2-linux-9d8506cc2d7ea1f911c72c100193a3677f6668c3.zip
gso: handle new frag_list of frags GRO packets
Recently GRO started generating packets with frag_lists of frags. This was not handled by GSO, thus leading to a crash. Thankfully these packets are of a regular form and are easy to handle. This patch handles them in two ways. For completely non-linear frag_list entries, we simply continue to iterate over the frag_list frags once we exhaust the normal frags. For frag_list entries with linear parts, we call pskb_trim on the first part of the frag_list skb, and then process the rest of the frags in the usual way. This patch also kills a chunk of dead frag_list code that has obviously never ever been run since it ends up generating a bogus GSO-segmented packet with a frag_list entry. Future work is planned to split super big packets into TSO ones. Fixes: 8a29111c7ca6 ("net: gro: allow to build full sized skb") Reported-by: Christoph Paasch <christoph.paasch@uclouvain.be> Reported-by: Jerry Chu <hkchu@google.com> Reported-by: Sander Eikelenboom <linux@eikelenboom.it> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Eric Dumazet <edumazet@google.com> Tested-by: Sander Eikelenboom <linux@eikelenboom.it> Tested-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/outqueue.c')
0 files changed, 0 insertions, 0 deletions