From patchwork Sat May 11 20:14:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1098460 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=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="ihz8I0Gi"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 451ddc6lY0z9sDQ for ; Sun, 12 May 2019 06:16:36 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726327AbfEKUQM (ORCPT ); Sat, 11 May 2019 16:16:12 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:45707 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726100AbfEKUQM (ORCPT ); Sat, 11 May 2019 16:16:12 -0400 Received: by mail-wr1-f68.google.com with SMTP id b18so1197327wrq.12 for ; Sat, 11 May 2019 13:16:10 -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=RpDFMdPDM3WRjweaGGvyVDk2hIKJfB0v8xZ3hbSBjVA=; b=ihz8I0Gimy0vB+PXoUH25O40gufVpqrgjSGa6G+HMrCrnQm0MThNlMfHsFQ+qJ72cn tbvgDTYLxR0/oV5PQuoEscjXxG20tRsyhbymdLbqij8TRlonu763OP+b8bKK06akl2Uv C1R7hkfOMyp4jsfCJ/cY3g4SJBRk2ztHFyXGoAdJSsKeAjvLFoAQ7DefJkJhPC7OMYmm wgVhiSb1d3ZfDRQq2PqVm2OIPyDsmTaNf0mC5IOezwYfQb1DNX++LmxLxOEIsBOuTuqs tqhYpgse44TGtugYwv6ZOoTB32wJXcs8LYm7IMssnwZH5wT8ikRPWiYCu5VYRKOOyoGl RTgw== 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=RpDFMdPDM3WRjweaGGvyVDk2hIKJfB0v8xZ3hbSBjVA=; b=cUEjad453ni5nc7rOdh/1eurFrFP6UA7wylIbxtZO3Kf3nkGWb5wPkI9gEqFGvcRSu bRjSfg73Crjbrk/2GrbwYqrOYmpIRX3SIGcOgO6ytJffOah5/xy6xqM/vfvHFZ/181EX hrbVTXC+KARZKvWO05hmEi6BSJEdBplgteQWqNMdKHOiaj1weafnXZz5ziubAOpXdWBx 9co5quUVepi9nyESSq4uRXgPhJh4HXwNk3cyz9ioA6mAaEhX90TKHZFKCmT8hCQPK9Xq ZPrqeG7f45t+Z36fTLIL3CigO5uwrGD2vYfpVRi7W8PTKO5sjZf2jdii7c9tJPcUMza6 9bIw== X-Gm-Message-State: APjAAAWlepsHFq6itxLMgTUB0DMsSNt50/STES6pAsQ+SVri8U1DX99r M3YMVbDCncVAifNRWSJoi+o= X-Google-Smtp-Source: APXvYqx609VHwycgwJ9CzRsN2wvXGwzFRsvQEqocIbtrFeEjUCWdkaTeE7JZ44fM5JnvvuuKfZ3rMQ== X-Received: by 2002:a5d:420a:: with SMTP id n10mr11648898wrq.325.1557605770137; Sat, 11 May 2019 13:16:10 -0700 (PDT) Received: from localhost.localdomain (5-12-225-227.residential.rdsnet.ro. [5.12.225.227]) by smtp.gmail.com with ESMTPSA id c20sm11853275wre.28.2019.05.11.13.16.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 11 May 2019 13:16:09 -0700 (PDT) From: Vladimir Oltean To: f.fainelli@gmail.com, vivien.didelot@gmail.com, andrew@lunn.ch, davem@davemloft.net Cc: netdev@vger.kernel.org, Vladimir Oltean Subject: [PATCH net 1/3] net: dsa: Initialize DSA_SKB_CB(skb)->deferred_xmit variable Date: Sat, 11 May 2019 23:14:45 +0300 Message-Id: <20190511201447.15662-2-olteanv@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190511201447.15662-1-olteanv@gmail.com> References: <20190511201447.15662-1-olteanv@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The sk_buff control block can have any contents on xmit put there by the stack, so initialization is mandatory, since we are checking its value after the actual DSA xmit (the tagger may have changed it). The DSA_SKB_ZERO() macro could have been used for this purpose, but: - Zeroizing a 48-byte memory region in the hotpath is best avoided. - It would have triggered a warning with newer compilers since __dsa_skb_cb contains a structure within a structure, and the {0} initializer was incorrect for that purpose. So simply remove the DSA_SKB_ZERO() macro and initialize the deferred_xmit variable by hand (which should be done for all further dsa_skb_cb variables which need initialization - currently none - to avoid the performance penalty). Fixes: 97a69a0dea9a ("net: dsa: Add support for deferred xmit") Signed-off-by: Vladimir Oltean --- include/net/dsa.h | 3 --- net/dsa/slave.c | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/include/net/dsa.h b/include/net/dsa.h index 6aaaadd6a413..35ca1f2c6e28 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -102,9 +102,6 @@ struct __dsa_skb_cb { #define DSA_SKB_CB_COPY(nskb, skb) \ { *__DSA_SKB_CB(nskb) = *__DSA_SKB_CB(skb); } -#define DSA_SKB_CB_ZERO(skb) \ - { *__DSA_SKB_CB(skb) = (struct __dsa_skb_cb) {0}; } - #define DSA_SKB_CB_PRIV(skb) \ ((void *)(skb)->cb + offsetof(struct __dsa_skb_cb, priv)) diff --git a/net/dsa/slave.c b/net/dsa/slave.c index fe7b6a62e8f1..9892ca1f6859 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -463,6 +463,8 @@ static netdev_tx_t dsa_slave_xmit(struct sk_buff *skb, struct net_device *dev) s->tx_bytes += skb->len; u64_stats_update_end(&s->syncp); + DSA_SKB_CB(skb)->deferred_xmit = false; + /* Identify PTP protocol packets, clone them, and pass them to the * switch driver */ From patchwork Sat May 11 20:14:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1098461 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=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="T/jyTPNZ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 451ddd2Tszz9sDn for ; Sun, 12 May 2019 06:16:37 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726347AbfEKUQN (ORCPT ); Sat, 11 May 2019 16:16:13 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:51772 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726294AbfEKUQN (ORCPT ); Sat, 11 May 2019 16:16:13 -0400 Received: by mail-wm1-f66.google.com with SMTP id o189so10436709wmb.1 for ; Sat, 11 May 2019 13:16:11 -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=oFNu5V4437RfWuwqQqW1Oi8bzMEKmaJKuacTlqlURsA=; b=T/jyTPNZpzZ4hyg7b47bHn/TyhnpTboMEdyMJPHU4xy6V9hUc7w9gSfnkWY6JblJTM qXDqg+289qodMIlflpDg9pFTWofZ0mB1MG3+zwKxxBWa7HRd733JvWw7xTCWY2QpKXll eoYA/NXMGGQYcHOfuTZKSJ4tkPL+45Fv9GpdMFZMcIknU874nasq3ySSNuj6VK56tRWT tj9WMSDgke7jTxpKJGuoim28R2ldRKRhUd0FvF7dbBeagIHuqU3QG5cHzy2ujxGyA3K5 56FFbxvtXsewIYDBe82lngPNPjVhFLUwG1kAmyAeYAtH2sj4KXbzcmqBM+6g4WGZSPPO slFA== 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=oFNu5V4437RfWuwqQqW1Oi8bzMEKmaJKuacTlqlURsA=; b=U4M9hu3lmmNrQ7YAAm/KPVFh3R4KpCg7WXIX2yFrue7000S8RheAr4q+Unp5Zxq9ZT /k0RN3yDZdunn/L/1tJOxfA/VZvgj/xMaCpLRkz+bQc/cnxnZ+Ort7H81hMMxcqz8gOr /3Fjdj6eLMdBvuusHNTvqUvAT2zPnca6D9kFHL5SGMvpf2WGs62hei9GHf2cwEkJ7k7E hkOAPRedbGZua9Kcx0zmSwMeG4YyG3mMN2imuir+gkJ/K7b6mCREaCvGEPzDRirlKntd 0OP0bXqBRTb6RlwsQLeWWrYuWASrILugGYlzQGPlAjDk0TuoS1ery1lbsFZjSrGFS3nE cRIg== X-Gm-Message-State: APjAAAWVBmy+4BB/ueyXBPgYNQ5dlInCFA2UqAoe+wIQiwwChAcUrVPB Q7UEgSntyf+MMmaZhAcEeys= X-Google-Smtp-Source: APXvYqyQjQhkkUYwCv+eD3nWVyC83XdC19X7Qiw6WRLJDnwApvnEkV/pXSBkFsJVKMukK9NSm1kSDA== X-Received: by 2002:a7b:c74e:: with SMTP id w14mr10666679wmk.19.1557605771009; Sat, 11 May 2019 13:16:11 -0700 (PDT) Received: from localhost.localdomain (5-12-225-227.residential.rdsnet.ro. [5.12.225.227]) by smtp.gmail.com with ESMTPSA id c20sm11853275wre.28.2019.05.11.13.16.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 11 May 2019 13:16:10 -0700 (PDT) From: Vladimir Oltean To: f.fainelli@gmail.com, vivien.didelot@gmail.com, andrew@lunn.ch, davem@davemloft.net Cc: netdev@vger.kernel.org, Vladimir Oltean Subject: [PATCH net 2/3] net: dsa: Remove dangerous DSA_SKB_CLONE() macro Date: Sat, 11 May 2019 23:14:46 +0300 Message-Id: <20190511201447.15662-3-olteanv@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190511201447.15662-1-olteanv@gmail.com> References: <20190511201447.15662-1-olteanv@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This does not cause any bug now because it has no users, but its body contains two pointer definitions within a code block: struct sk_buff *clone = _clone; \ struct sk_buff *skb = _skb; \ When calling the macro as DSA_SKB_CLONE(clone, skb), these variables would obscure the arguments that the macro was called with, and the initializers would be a no-op instead of doing their job (undefined behavior, by the way, but GCC nicely puts NULL pointers instead). So simply remove this broken macro and leave users to simply call "DSA_SKB_CB(skb)->clone = clone" by hand when needed. There is one functional difference when doing what I just suggested above: the control block won't be transferred from the original skb into the clone. Since there's no foreseen need for the control block in the clone ATM, this is ok. Fixes: b68b0dd0fb2d ("net: dsa: Keep private info in the skb->cb") Signed-off-by: Vladimir Oltean Reviewed-by: Andrew Lunn --- include/net/dsa.h | 9 --------- 1 file changed, 9 deletions(-) diff --git a/include/net/dsa.h b/include/net/dsa.h index 35ca1f2c6e28..1f6b8608b0b7 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -105,15 +105,6 @@ struct __dsa_skb_cb { #define DSA_SKB_CB_PRIV(skb) \ ((void *)(skb)->cb + offsetof(struct __dsa_skb_cb, priv)) -#define DSA_SKB_CB_CLONE(_clone, _skb) \ - { \ - struct sk_buff *clone = _clone; \ - struct sk_buff *skb = _skb; \ - \ - DSA_SKB_CB_COPY(clone, skb); \ - DSA_SKB_CB(skb)->clone = clone; \ - } - struct dsa_switch_tree { struct list_head list; From patchwork Sat May 11 20:14:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1098462 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=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="QRBLKxkp"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 451ddd5L35z9sCJ for ; Sun, 12 May 2019 06:16:37 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726380AbfEKUQO (ORCPT ); Sat, 11 May 2019 16:16:14 -0400 Received: from mail-wm1-f65.google.com ([209.85.128.65]:38159 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726099AbfEKUQN (ORCPT ); Sat, 11 May 2019 16:16:13 -0400 Received: by mail-wm1-f65.google.com with SMTP id f2so10310792wmj.3 for ; Sat, 11 May 2019 13:16:12 -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=me4URjANaOIl3VpDy3HEOCBvfiAoVOwXVY6rPvwl+Mw=; b=QRBLKxkp03F8iQm+bL/RxTytnuOhCQ0oDwK0Bq2Q79GW+2MIVewEMv64CqzziXO+D4 E53IEmWsO+kCCVRxBhYS1ydStrV1Y2rVOpoQn8aeZS5LbbdXhOxXWjveOg5aiUflzXSl C9qOHELCsWVfVWg1f7cYMvUjfgaeUVAPliMwEIvWRsHQOKisoVeTnXUIIw+oatggsXFe lSABSJruucpC/dKU3dYvXbMdBmfexPUyrZLjyvHcLtYw+eernF41nVuTuJ4dvtXxwvzv O76Szn3EuQKuWznLuq3EB/94RfQkM0YH2LGjsSN4Z+i28XJGUX6ucG6vcBvyI4lHeort PQCQ== 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=me4URjANaOIl3VpDy3HEOCBvfiAoVOwXVY6rPvwl+Mw=; b=W8HcwhadDBeq4zZdXiYouqIW+r7T1QesiAhXdIH6BcIMJTiDvwJ+QsUbZNyYgfIZig htdC9i8W6Hjn7fI+axb2FojTixqdHkyRgP2m5UKuw+sQ/tFKeY1Q1XNjnvLH4hC4kkS9 BBmt5dLSWf4N3pph3mt/e97kZG70M9mN/fNaeuu+Ih0VWqAwRJe6StLOa+0cFYD4VIPW Uz4iPubBF//nZvFtjXqeSfEcXOLs6l0TLvbYo5kzzPUafx16ByRkuShJYs69sSbFWAEo CyRVLAxJGs3gIH5iQQVwf/BvUHBibvKxtThTOabeyIQgsIPF8xwITDXDSEeg2knc/Lhk gvHg== X-Gm-Message-State: APjAAAW8b0FCQvvzKeuElHsFMueXr/j8deDEYyMv+Xr1bGvZBhg5YvmM rs45AypFwb1y+dar7mQrjXu4+6rL X-Google-Smtp-Source: APXvYqyMunYPnz65A3mxXwR9bFC2SpUSLOj66GxnGJfzfdby13RJTKQ91CBAOuGw6Lh0CHPFKiy/hA== X-Received: by 2002:a1c:741a:: with SMTP id p26mr11000709wmc.38.1557605771940; Sat, 11 May 2019 13:16:11 -0700 (PDT) Received: from localhost.localdomain (5-12-225-227.residential.rdsnet.ro. [5.12.225.227]) by smtp.gmail.com with ESMTPSA id c20sm11853275wre.28.2019.05.11.13.16.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 11 May 2019 13:16:11 -0700 (PDT) From: Vladimir Oltean To: f.fainelli@gmail.com, vivien.didelot@gmail.com, andrew@lunn.ch, davem@davemloft.net Cc: netdev@vger.kernel.org, Vladimir Oltean Subject: [PATCH net 3/3] net: dsa: Remove the now unused DSA_SKB_CB_COPY() macro Date: Sat, 11 May 2019 23:14:47 +0300 Message-Id: <20190511201447.15662-4-olteanv@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190511201447.15662-1-olteanv@gmail.com> References: <20190511201447.15662-1-olteanv@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org It's best to not expose this, due to the performance hit it may cause when calling it. Fixes: b68b0dd0fb2d ("net: dsa: Keep private info in the skb->cb") Signed-off-by: Vladimir Oltean Reviewed-by: Andrew Lunn --- include/net/dsa.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/net/dsa.h b/include/net/dsa.h index 1f6b8608b0b7..685294817712 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -99,9 +99,6 @@ struct __dsa_skb_cb { #define DSA_SKB_CB(skb) ((struct dsa_skb_cb *)((skb)->cb)) -#define DSA_SKB_CB_COPY(nskb, skb) \ - { *__DSA_SKB_CB(nskb) = *__DSA_SKB_CB(skb); } - #define DSA_SKB_CB_PRIV(skb) \ ((void *)(skb)->cb + offsetof(struct __dsa_skb_cb, priv))