From patchwork Fri Sep 23 20:23:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101747 Delivered-To: patch@linaro.org Received: by 10.140.106.72 with SMTP id d66csp42131qgf; Fri, 23 Sep 2016 13:24:58 -0700 (PDT) X-Received: by 10.98.135.136 with SMTP id i130mr15336699pfe.145.1474662298472; Fri, 23 Sep 2016 13:24:58 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g3si659225paw.241.2016.09.23.13.24.58; Fri, 23 Sep 2016 13:24:58 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1034697AbcIWUYz (ORCPT + 27 others); Fri, 23 Sep 2016 16:24:55 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:56307 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759300AbcIWUYy (ORCPT ); Fri, 23 Sep 2016 16:24:54 -0400 Received: from wuerfel.lan. ([78.43.20.153]) by mrelayeu.kundenserver.de (mreue101) with ESMTPA (Nemesis) id 0M8zYj-1bfZsO3XmX-00CU3r; Fri, 23 Sep 2016 22:24:45 +0200 From: Arnd Bergmann To: Jakub Kicinski , "David S. Miller" Cc: Arnd Bergmann , oss-drivers@netronome.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] nfp: bpf: improve handling for disabled BPF syscall Date: Fri, 23 Sep 2016 22:23:59 +0200 Message-Id: <20160923202443.4130858-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:IpSIsj2nw6wbHM3kLwXxxQCScd6QQsWYzjp7wIbXQAQGWcrW8QN 9Orfz20GSuN1bLXfmtuEYBXHho1vB68oh+qQ9BpT2IQnLAtjETuANIhYKEPx83LGxKNaghS 3fyPrbheKS3xzMPZVASpQBnQ2L7fgfes0eZp4p15XAoVM7hpEChG8x7Y75QLiSd5NxH3OjE PLN7HU6f8aOY9veUUpbYw== X-UI-Out-Filterresults: notjunk:1; V01:K0:8iRhZ9MussY=:MOId2EGZ5ZtoJAoUQnkr7T CCgicOnwDoiLP8al3a1vb/mX6bNpmteMRTMHJsDMDNV9hmDAOVMgqyKDu1tdYxcFhLTfN6+fV GjEXk46Z7JmzSug23J5JFCXbHhrm0iN39CRXyynXDOlpzdfAEa3XWcxrrDXgT/gmwMj2yJ92Q paOcMPTAHSu8lZRh38kmbrNPkH0knuuoInSWDDYfmVPonDXnvtozBpKWOgjQVwnNgbtIdXHWu TQlOo7TUXUU+DwpxL2AqFIBXfdYnzkx9kKSxjMb9RcI6cxcGqv6R/as2oO8LeuNn2Qnj6Tvgo Q0tn1W1ZO97vXSKNjw0jdtFbJ7qloiF0Ia+T0Kjj+qMBPtmShCHcUGGc4Vmphi4sX2y8dBN/s acGB6iwhNEqojsNcxWtQSreDrNCRfvNHD5LHIgxXgxljkw5+40Z3VEhoLreU1XYYzQGugKRow noYfZiw2o1wK9mT9EiF4q/+yJtyYr/vpJijRf3EAR699cetE0Qx//MXtAwDbVSDMMw1YIEhEx CGeNTv7PYUvJe81FfyfDNFjTfKf9MjqkmPuToLMMbftRAXK/Nn83w20plqTZ0Gzbjv20AtGgS 7zoMGpCq2sCKcgr/RejtYdq0bCD/uK8f/fBdF5K1w2jbCWrzi30V7GBH/U9Zq0jCz2CG8bdrY DH0E1Ys3WAvKRvkQiEbrHd+5XJB6JikfP+pDi8s44GdROnaRHz/+xgYg7nwyhVTGxDhEN7VHK kfsbi11zdkZMTp3vVc6l55OiUh6xRC9PpjGNq6ZzbZiewDxWJ4luSE2EBSFaJugQPBMfQ8Jf7 1e1xaGnkC8ahndAJ8hbknzn5rRr6aPH/poVdFtC/8QVX+QD7WNOLDFPdRAEPJ/jMxQpHmDYsB cOk1wMLYfQrFMl52uamg== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I stumbled over a new warning during randconfig testing, with CONFIG_BPF_SYSCALL disabled: drivers/net/ethernet/netronome/nfp/nfp_net_offload.c: In function 'nfp_net_bpf_offload': drivers/net/ethernet/netronome/nfp/nfp_net_offload.c:263:3: error: '*((void *)&res+4)' may be used uninitialized in this function [-Werror=maybe-uninitialized] drivers/net/ethernet/netronome/nfp/nfp_net_offload.c:263:3: error: 'res.n_instr' may be used uninitialized in this function [-Werror=maybe-uninitialized] As far as I can tell, this is a false positive caused by the compiler getting confused about a function that is partially inlined, but it's easy to avoid while improving the code: The nfp_bpf_jit() stub helper for that configuration is unusual as it is defined in a header file but not marked 'static inline'. By moving the compile-time check into the caller using the IS_ENABLED() macro, we can remove that stub and simplify the nfp_net_bpf_offload_prepare() function enough to unconfuse the compiler. Fixes: 7533fdc0f77f ("nfp: bpf: add hardware bpf offload") Signed-off-by: Arnd Bergmann --- drivers/net/ethernet/netronome/nfp/nfp_bpf.h | 10 ---------- drivers/net/ethernet/netronome/nfp/nfp_net_offload.c | 3 +++ 2 files changed, 3 insertions(+), 10 deletions(-) -- 2.9.0 diff --git a/drivers/net/ethernet/netronome/nfp/nfp_bpf.h b/drivers/net/ethernet/netronome/nfp/nfp_bpf.h index fc220cd04115..87aa8a3e9112 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_bpf.h +++ b/drivers/net/ethernet/netronome/nfp/nfp_bpf.h @@ -192,20 +192,10 @@ struct nfp_bpf_result { bool dense_mode; }; -#ifdef CONFIG_BPF_SYSCALL int nfp_bpf_jit(struct bpf_prog *filter, void *prog, enum nfp_bpf_action_type act, unsigned int prog_start, unsigned int prog_done, unsigned int prog_sz, struct nfp_bpf_result *res); -#else -int -nfp_bpf_jit(struct bpf_prog *filter, void *prog, enum nfp_bpf_action_type act, - unsigned int prog_start, unsigned int prog_done, - unsigned int prog_sz, struct nfp_bpf_result *res) -{ - return -ENOTSUPP; -} -#endif int nfp_prog_verify(struct nfp_prog *nfp_prog, struct bpf_prog *prog); diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_offload.c b/drivers/net/ethernet/netronome/nfp/nfp_net_offload.c index 43f42f842eda..8acfb631a0ea 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_offload.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_offload.c @@ -148,6 +148,9 @@ nfp_net_bpf_offload_prepare(struct nfp_net *nn, unsigned int max_mtu; int ret; + if (!IS_ENABLED(CONFIG_BPF_SYSCALL)) + return -ENOTSUPP; + ret = nfp_net_bpf_get_act(nn, cls_bpf); if (ret < 0) return ret;