> Okay, I'm working on a patch that adds explicit checks Sent: http://patchwork.ozlabs.org/patch/863237/
> > @@ -45,6 +45,9 @@ static struct sk_buff *sctp_gso_segment(struct sk_buff > *skb, > struct sk_buff *segs = ERR_PTR(-EINVAL); > struct sctphdr *sh; > > + if (!skb_shinfo(skb)->gso_type & SKB_GSO_SCTP) > + goto out; > + > > to all transport layer gso offloads: {sctp, tcpv[46], ufov[46], espv[46]}. > This > will block packets with gso_type X but protocol type Y from being parsed. > But does allow entering a tunnel protocol handler if that is different from Y, > unlike the above patch. > > tunnels segmentation itself is protected by skb->encapsulation. Only tunnel > devices in the stack can set this field, not virtio_net_hdr_to_skb. Packets > that > enter {gre, udp tunnel, ipxip4, ipxip6} without this bit are already dropped, > so > no new checks are needed to these based on gso_type. This is not yet sufficient. If a packet comes from userspace with tunnel headers and passes through a tunnel that sets skb->encapsulation, it is indistinguishable from a valid tunneled packet. That bit is not exclusive,