From patchwork Wed Apr 25 06:46:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Tu X-Patchwork-Id: 904020 X-Patchwork-Delegate: bpf@iogearbox.net 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="eI790925"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40W9jw5MW3z9ryk for ; Wed, 25 Apr 2018 16:47:32 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751322AbeDYGrb (ORCPT ); Wed, 25 Apr 2018 02:47:31 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:40298 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751285AbeDYGr3 (ORCPT ); Wed, 25 Apr 2018 02:47:29 -0400 Received: by mail-pg0-f65.google.com with SMTP id e9so12634673pgr.7 for ; Tue, 24 Apr 2018 23:47:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=KKSH2GwhLbKm7xUFnOXBP8eVP32xBQK3A9pWKjzxW+g=; b=eI790925slfUa/0ppk8TPPpd5WKDhQt+GOWsKeMkZOBtLvT3FMRLLsAGy83w2y1sN1 B8/LyUp3v3T3mBP1fJBxOnb0++Sc5TrAKRywwaqDAgpz4UpJJ2blVeRD1b+LVbKRzRN6 By1PFlHk5xL7VGmAdQvAhAX2XyhZsS52/Wxp9FU4S6khvxEAqJAuZacwC3EwOB21kOnc yN9D3st54LBXKPY3rmUtKuIhNGmP+wtld4NcLY/7gYVOzkYhs3vtWDWDt5dUmrFZCnz7 ZAweZC9UmBvSRXPxGXRTnHYBegP8c9qJfxuWvycjg8Zr34JLhkCrlT8PxR1/qpBMHxQU fAiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=KKSH2GwhLbKm7xUFnOXBP8eVP32xBQK3A9pWKjzxW+g=; b=ZobDm1C85DUsRGYqxIoR7iGHaCJfO+xQJG1hkggekOJNMU4QS+D5Xc29a9LMm4kulu 69v8AIcldRrkrKZVEE7XVwbUuW/pySzjafudaFIo6LiETMKCwkY9mGmd8YgmJv/KkZat IhtnUNNuBOCR0zFWzu4XkZHS1VLbFP/fVU0Zh0tGaxLBSpbeme/cV7ecexcZ4fUwX6Gs hIWJ6wRWno0ytjmga0kIajD5k4PFRM51Cv92iFEE8ia/+Y3s9PTFkDFCQ55L/9xiFCGU dR+A+SqCQbXqy8B7UUNJ1b/+vKyros3TWZR4sVknzM/TUylknvzDLm2HWD33UWSUIHU7 f1xQ== X-Gm-Message-State: ALQs6tBYDdjW1yaW3aChWuIlyALiLliXUwdxCdQehL1Z3+fCoNWplRwY dcjmB/+L6eb0QdCfiV+KF/RutGngsrw= X-Google-Smtp-Source: AIpwx49X2Fs7I1G/2qEx6mrj2QwQyCzcrRBcr58ssbeLsXD4yXuqoE+s7L5bf5tmOXDO3D7xRmRZIQ== X-Received: by 10.98.21.73 with SMTP id 70mr26881549pfv.91.1524638848505; Tue, 24 Apr 2018 23:47:28 -0700 (PDT) Received: from sc9-mailhost3.vmware.com (c-73-231-16-221.hsd1.ca.comcast.net. [73.231.16.221]) by smtp.gmail.com with ESMTPSA id 142sm18692845pgg.86.2018.04.24.23.47.27 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 24 Apr 2018 23:47:27 -0700 (PDT) From: William Tu To: netdev@vger.kernel.org Subject: [PATCH bpf-next] bpf: clear the ip_tunnel_info. Date: Tue, 24 Apr 2018 23:46:59 -0700 Message-Id: <1524638819-31626-1-git-send-email-u9012063@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The percpu metadata_dst might carry the stale ip_tunnel_info and cause incorrect behavior. When mixing tests using ipv4/ipv6 bpf vxlan and geneve tunnel, the ipv6 tunnel info incorrectly uses ipv4's src ip addr as its ipv6 src address, because the previous tunnel info does not clean up. The patch zeros the fields in ip_tunnel_info. Signed-off-by: William Tu Reported-by: Yifeng Sun --- net/core/filter.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/core/filter.c b/net/core/filter.c index 8e45c6c7ab08..d3781daa26ab 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -3281,6 +3281,7 @@ BPF_CALL_4(bpf_skb_set_tunnel_key, struct sk_buff *, skb, skb_dst_set(skb, (struct dst_entry *) md); info = &md->u.tun_info; + memset(info, 0, sizeof(*info)); info->mode = IP_TUNNEL_INFO_TX; info->key.tun_flags = TUNNEL_KEY | TUNNEL_CSUM | TUNNEL_NOCACHE;