diff options
author | Willem de Bruijn <willemb@google.com> | 2018-05-22 11:34:39 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-05-23 14:48:44 -0400 |
commit | ff06342cbca0ec2c0d5da8685d2691e2d0e9764a (patch) | |
tree | caf80215af338031f807e099685cd9369ad22343 /net/ipv4 | |
parent | e89e59c08d1bc736c8f593d7bad0706b20e73f30 (diff) | |
download | linux-ff06342cbca0ec2c0d5da8685d2691e2d0e9764a.tar.gz linux-ff06342cbca0ec2c0d5da8685d2691e2d0e9764a.tar.bz2 linux-ff06342cbca0ec2c0d5da8685d2691e2d0e9764a.zip |
udp: exclude gso from xfrm paths
UDP GSO delays final datagram construction to the GSO layer. This
conflicts with protocol transformations.
Fixes: bec1f6f69736 ("udp: generate gso with UDP_SEGMENT")
CC: Michal Kubecek <mkubecek@suse.cz>
Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/udp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index ff4d4ba67735..d71f1f3e1155 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -788,7 +788,8 @@ static int udp_send_skb(struct sk_buff *skb, struct flowi4 *fl4, return -EINVAL; if (sk->sk_no_check_tx) return -EINVAL; - if (skb->ip_summed != CHECKSUM_PARTIAL || is_udplite) + if (skb->ip_summed != CHECKSUM_PARTIAL || is_udplite || + dst_xfrm(skb_dst(skb))) return -EIO; skb_shinfo(skb)->gso_size = cork->gso_size; |