From patchwork Sun Jan 13 13:59:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zahari Doychev X-Patchwork-Id: 1024080 X-Patchwork-Delegate: davem@davemloft.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=none (p=none dis=none) header.from=linux.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=googlemail.com header.i=@googlemail.com header.b="f1rzUEHm"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43cymB2wKsz9sCr for ; Mon, 14 Jan 2019 00:55:22 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726599AbfAMNzC (ORCPT ); Sun, 13 Jan 2019 08:55:02 -0500 Received: from mail-wr1-f68.google.com ([209.85.221.68]:45471 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726434AbfAMNzC (ORCPT ); Sun, 13 Jan 2019 08:55:02 -0500 Received: by mail-wr1-f68.google.com with SMTP id t6so19911497wrr.12 for ; Sun, 13 Jan 2019 05:55:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qNxM9Hb0kCtLvQAiNq6wya0I6xrnWFNPO2CcDtAeFFo=; b=f1rzUEHmxzLqYV9qswwFq7Zc/A+rC4uPY2Ugk3ZAUEiz2DSymGvfwA0bekELK3VkZH WZG+TRemIsM1IHb592EJP9ngXl/a2iqhvyOP3dUHgZaLaa9D2orTDYMlsjnY0IXqtP+E GcqFO5b9eE3Rl5E0tELEbR1bd+iUT6nSH82ioHhXhW9aKBn3HJB8o3YrD/Jyb0muQQJ5 b++mcneB4TVuhmtDkENqIfyj9zTP56rQd1ycmw9ptKg4JA5Sbrmb395+zTEgdyReNpT5 vCtcHl7/leNK5pyn+u6oXZuLdf/THdnYi7hFbg7z0RZ2rfbVwRTdkyzv+w0QSH1iHyRC jURA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=qNxM9Hb0kCtLvQAiNq6wya0I6xrnWFNPO2CcDtAeFFo=; b=tzQGCiEm9N3T/cAu4qFrj2aKovZFK1Ko8E7pnsIi5DsuXoL6bXPt3DxnO++QwFTNM4 tf1/o4vGlYD1EoxWI3Qpt2p55/cvFtSA30MQdX4O8Yz+CefOAjzXrqKq8J2vBJIIxDOL hrqkFHg6kpUipRQCtJpymuhOzYN6q/re19xVXSBQBHHH0Y22/JS6vgmJ2ldpWfXaXtne JwZnI0Ylva4v0TmxrIBM8qD+qRU4hydfo+/Wvaoi9G0H+87BPW+VBaDi/zaTcnXY5DA7 J854gs2/L39RR4GacjJM2lBodriDZIUCbMiK2r0JrqTPY7saQmCP+TvwarLThUWultad hDIw== X-Gm-Message-State: AJcUukdEKjWaLmLSl5woWfEyitL3JvSTb7ZYrGcNBL6lHMN+3sNhXIfP OumJ53rUXZ4m5vQJbArGVkBw9wLVSHQ= X-Google-Smtp-Source: ALg8bN4+BjN/p6K7bhegjDpYemzjAcShDbB7N8eeq9w8bssw/Pann/nOG2uE7SYOV4zO93JMwXuj9Q== X-Received: by 2002:adf:9422:: with SMTP id 31mr22053845wrq.106.1547387700199; Sun, 13 Jan 2019 05:55:00 -0800 (PST) Received: from localhost.localdomain (ipbcc05724.dynamic.kabel-deutschland.de. [188.192.87.36]) by smtp.gmail.com with ESMTPSA id m4sm21407879wmi.3.2019.01.13.05.54.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 13 Jan 2019 05:54:59 -0800 (PST) From: Zahari Doychev To: netdev@vger.kernel.org, bridge@lists.linux-foundation.org, nikolay@cumulusnetworks.com, roopa@cumulusnetworks.com Cc: jhs@mojatatu.com, johannes@sipsolutions.net, zahari.doychev@linux.com Subject: [PATCH 2/2] net: bridge: fix tc added vlan insert as payload Date: Sun, 13 Jan 2019 14:59:39 +0100 Message-Id: <20190113135939.8970-3-zahari.doychev@linux.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190113135939.8970-1-zahari.doychev@linux.com> References: <20190113135939.8970-1-zahari.doychev@linux.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The skb->mac_len is used for the skb_push before inserting the vlan tag to the packet payload. After that the skb is pulled only ETH_HLEN and the network header is being reset to get the correct packet mac header. This avoids sending packets with incorrect mac header when vlan tags are pushed with tc-vlan and the bridge tpid does not match the inserted vlan tpid. The vlan tag is inserted at the right place of the header. Signed-off-by: Zahari Doychev --- net/bridge/br_vlan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/bridge/br_vlan.c b/net/bridge/br_vlan.c index 4a2f31157ef5..f857487245c6 100644 --- a/net/bridge/br_vlan.c +++ b/net/bridge/br_vlan.c @@ -460,13 +460,14 @@ static bool __allowed_ingress(const struct net_bridge *br, /* Tagged frame */ if (skb->vlan_proto != br->vlan_proto) { /* Protocol-mismatch, empty out vlan_tci for new tag */ - skb_push(skb, ETH_HLEN); + skb_push(skb, skb->mac_len); skb = vlan_insert_tag_set_proto(skb, skb->vlan_proto, skb_vlan_tag_get(skb)); if (unlikely(!skb)) return false; skb_pull(skb, ETH_HLEN); + skb_reset_network_header(skb); skb_reset_mac_len(skb); *vid = 0; tagged = false;