From patchwork Mon May 14 23:07:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Willem de Bruijn X-Patchwork-Id: 913354 Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="aYCrkcuM"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40lGZW2fc6z9s1R for ; Tue, 15 May 2018 09:08:03 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752221AbeENXHx (ORCPT ); Mon, 14 May 2018 19:07:53 -0400 Received: from mail-qk0-f195.google.com ([209.85.220.195]:42913 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752133AbeENXHw (ORCPT ); Mon, 14 May 2018 19:07:52 -0400 Received: by mail-qk0-f195.google.com with SMTP id b22-v6so5589653qkj.9 for ; Mon, 14 May 2018 16:07:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Jhu4wDOEIH0HhEdHmvsFencZipaKc8YHioUcIwBA4bA=; b=aYCrkcuM+/c0tW+Ybz9neAx3GYw7OCgn1s2gBALpRPfCMwX4czfLS/sCEJ6mOy5OS+ 8hGhsqWZLSTGsBlu2yDTJPK3zfIt9S9raBIyxbI6sDMdv2P4XaJRlY5bZNrZf2TCk4J9 Gf4Zbcw88hI0YdPXadvuwiIl/UT12tAg17Okf82HOpYqC+3kVc9kapcMXtbYMwYjm3IM 7dxxv+k5YZvP8sPN4h1kbYdQkTYdZ/mRvCF5mFN0gDPQDgwErWqplYvDWNQk9EKRk5XO bczuz7jVfRNDDSZDSt0zuxgOqfl5la3tkLnCNxs5YGGmbdB5k6F2LNYhMw4e/r2iJsCj +SeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Jhu4wDOEIH0HhEdHmvsFencZipaKc8YHioUcIwBA4bA=; b=NLZbGvTWl41XMp+Jb0oI3DIqr4Dql/SAofK2bkpv34Snc60D6H/NtRfxR0UR7ds7Q6 QsVITUp1TX0SPMBwtR25Y3iVWG3sBip77d5iEbDtYwUHFHYcDgenpN7s5IkW8PRIUU3X 8LuQR9qTFYELILhsPK6cNwmRDaQ9jL5IKawfbg8u3vjRZbKq0y15kUUyr2LkP4qs5vbV os+h59Kbckw97QyewylZ3qcpWTGSwt6GCwRafMT+xfPodhszOQ+bddUP5xqieOJc/EPp N/79kxturLeHbr69ANJoB8FAZCzAIDdPqgEPfYtVa9THhbs2620fZQmY5Gq2Vci3OKrd eOkg== X-Gm-Message-State: ALKqPwcVcWCF5vhCIJwZdl0gnZIdqlRpLeg4YGOORtbuk62NIICLdcHh 30b12DII4eZMxFNtJhq5ONuGY7W8 X-Google-Smtp-Source: AB8JxZoPrmYx1S+eRjoUahPGHBJt6LNl66xReaMWuYsofOA37CWcOTJNuO5LhYZEHSY84BnZ9MTp4Q== X-Received: by 2002:a37:cc8e:: with SMTP id n14-v6mr7601557qkl.198.1526339270848; Mon, 14 May 2018 16:07:50 -0700 (PDT) Received: from willemb1.nyc.corp.google.com ([2620:0:1003:315:3fa1:a34c:1128:1d39]) by smtp.gmail.com with ESMTPSA id x10-v6sm7301335qkl.8.2018.05.14.16.07.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 14 May 2018 16:07:50 -0700 (PDT) From: Willem de Bruijn To: netdev@vger.kernel.org Cc: davem@davemloft.net, Willem de Bruijn , Michal Kubecek Subject: [PATCH net-next 1/3] udp: exclude gso from xfrm paths Date: Mon, 14 May 2018 19:07:45 -0400 Message-Id: <20180514230747.118875-2-willemdebruijn.kernel@gmail.com> X-Mailer: git-send-email 2.17.0.441.gb46fe60e1d-goog In-Reply-To: <20180514230747.118875-1-willemdebruijn.kernel@gmail.com> References: <20180514230747.118875-1-willemdebruijn.kernel@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Willem de Bruijn UDP GSO conflicts with transformations in the XFRM layer. Return an error if GSO is attempted. Fixes: bec1f6f69736 ("udp: generate gso with UDP_SEGMENT") CC: Michal Kubecek Signed-off-by: Willem de Bruijn --- net/ipv4/udp.c | 3 ++- net/ipv6/udp.c | 3 ++- 2 files changed, 4 insertions(+), 2 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; diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 2839c1bd1e58..426c9d2b418d 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -1053,7 +1053,8 @@ static int udp_v6_send_skb(struct sk_buff *skb, struct flowi6 *fl6, return -EINVAL; if (udp_sk(sk)->no_check6_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;