Hi Daniel, On Sun, Jun 5, 2016 at 12:53 AM, Daniel Borkmann <dan...@iogearbox.net> wrote: > On 06/05/2016 01:46 AM, kbuild test robot wrote: >> >> Hi, >> >> [auto build test ERROR on net-next/master] >> >> url: >> https://github.com/0day-ci/linux/commits/Zi-Shen-Lim/arm64-bpf-implement-bpf_tail_call-helper/20160605-060435 >> config: arm64-defconfig (attached as .config) >> compiler: aarch64-linux-gnu-gcc (Debian 5.3.1-8) 5.3.1 20160205 >> reproduce: >> wget >> https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross >> -O ~/bin/make.cross >> chmod +x ~/bin/make.cross >> # save the attached .config to linux build tree >> make.cross ARCH=arm64 >> >> All errors (new ones prefixed by >>): >> >> In file included from arch/arm64/net/bpf_jit_comp.c:21:0: >> include/linux/bpf.h: In function 'bpf_prog_get': >>>> >>>> include/linux/bpf.h:235:9: error: implicit declaration of function >>>> 'ERR_PTR' [-Werror=implicit-function-declaration] >> >> return ERR_PTR(-EOPNOTSUPP); >> ^ >> include/linux/bpf.h:235:9: warning: return makes pointer from integer >> without a cast [-Wint-conversion] >> In file included from include/linux/rwsem.h:17:0, >> from include/linux/mm_types.h:10, >> from include/linux/sched.h:27, >> from arch/arm64/include/asm/compat.h:25, >> from arch/arm64/include/asm/stat.h:23, >> from include/linux/stat.h:5, >> from include/linux/compat.h:12, >> from include/linux/filter.h:10, >> from arch/arm64/net/bpf_jit_comp.c:22: >> include/linux/err.h: At top level: >>>> >>>> include/linux/err.h:23:35: error: conflicting types for 'ERR_PTR' >> >> static inline void * __must_check ERR_PTR(long error) >> ^ >> In file included from arch/arm64/net/bpf_jit_comp.c:21:0: >> include/linux/bpf.h:235:9: note: previous implicit declaration of >> 'ERR_PTR' was here >> return ERR_PTR(-EOPNOTSUPP); >> ^ >> cc1: some warnings being treated as errors > > > Looks like including linux/bpf.h at the very beginning causes issues when > bpf > syscall is disabled. We should probably just include linux/err.h from bpf.h.
How about the attached patch? Fixes compilation error on build !CONFIG_BPF_SYSCALL. Also, should this patch be sent to net or net-next (along with this series)? Thanks, z
From 0633e3e528e11b09691fbf533ba7fdaf4c52f772 Mon Sep 17 00:00:00 2001 From: Zi Shen Lim <zlim....@gmail.com> Date: Sun, 5 Jun 2016 21:43:14 -0700 Subject: [PATCH] bpf: fix missing header inclusion Commit 0fc174dea545 ("ebpf: make internal bpf API independent of CONFIG_BPF_SYSCALL ifdefs") introduced usage of ERR_PTR() in bpf_prog_get(), however did not include linux/err.h. Without this patch, when compiling arm64 BPF without CONFIG_BPF_SYSCALL: ... In file included from arch/arm64/net/bpf_jit_comp.c:21:0: include/linux/bpf.h: In function 'bpf_prog_get': include/linux/bpf.h:235:9: error: implicit declaration of function 'ERR_PTR' [-Werror=implicit-function-declaration] return ERR_PTR(-EOPNOTSUPP); ^ include/linux/bpf.h:235:9: warning: return makes pointer from integer without a cast [-Wint-conversion] In file included from include/linux/rwsem.h:17:0, from include/linux/mm_types.h:10, from include/linux/sched.h:27, from arch/arm64/include/asm/compat.h:25, from arch/arm64/include/asm/stat.h:23, from include/linux/stat.h:5, from include/linux/compat.h:12, from include/linux/filter.h:10, from arch/arm64/net/bpf_jit_comp.c:22: include/linux/err.h: At top level: include/linux/err.h:23:35: error: conflicting types for 'ERR_PTR' static inline void * __must_check ERR_PTR(long error) ^ In file included from arch/arm64/net/bpf_jit_comp.c:21:0: include/linux/bpf.h:235:9: note: previous implicit declaration of 'ERR_PTR' was here return ERR_PTR(-EOPNOTSUPP); ^ ... Fixes: 0fc174dea545 ("ebpf: make internal bpf API independent of CONFIG_BPF_SYSCALL ifdefs") Suggested-by: Daniel Borkmann <dan...@iogearbox.net> Signed-off-by: Zi Shen Lim <zlim....@gmail.com> --- include/linux/bpf.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/linux/bpf.h b/include/linux/bpf.h index 8ee27b8..1bcae82 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -11,6 +11,7 @@ #include <linux/workqueue.h> #include <linux/file.h> #include <linux/percpu.h> +#include <linux/err.h> struct bpf_map; -- 1.9.1