From mboxrd@z Thu Jan 1 00:00:00 1970 From: kbuild test robot Subject: Re: [PATCH bpf-next 07/11] bpf: Add helper to retrieve socket in BPF Date: Fri, 14 Sep 2018 14:57:13 +0800 Message-ID: <201809141407.0B321AUD%fengguang.wu@intel.com> References: <20180912003640.28316-8-joe@wand.net.nz> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="CE+1k2dSO48ffgeK" Cc: kbuild-all@01.org, daniel@iogearbox.net, netdev@vger.kernel.org, ast@kernel.org, john.fastabend@gmail.com, tgraf@suug.ch, kafai@fb.com, nitin.hande@gmail.com, mauricio.vasquez@polito.it To: Joe Stringer Return-path: Received: from mga09.intel.com ([134.134.136.24]:42928 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727002AbeINMKh (ORCPT ); Fri, 14 Sep 2018 08:10:37 -0400 Content-Disposition: inline In-Reply-To: <20180912003640.28316-8-joe@wand.net.nz> Sender: netdev-owner@vger.kernel.org List-ID: --CE+1k2dSO48ffgeK Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Joe, Thank you for the patch! Yet something to improve: [auto build test ERROR on bpf-next/master] url: https://github.com/0day-ci/linux/commits/Joe-Stringer/Add-socket-lookup-support/20180914-134632 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master config: xtensa-common_defconfig (attached as .config) compiler: xtensa-linux-gcc (GCC) 8.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=8.1.0 make.cross ARCH=xtensa All errors (new ones prefixed by >>): net/core/filter.c:4930:1: note: in expansion of macro 'BPF_CALL_2' BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) ^~~~~~~~~~ net/core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____bpf_sk_release' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^~~~ include/linux/filter.h:443:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_2(name, ...) BPF_CALL_x(2, name, __VA_ARGS__) ^~~~~~~~~~ net/core/filter.c:4930:1: note: in expansion of macro 'BPF_CALL_2' BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) ^~~~~~~~~~ net/core/filter.c:4941:11: error: initializer element is not constant .func = bpf_sk_release, ^~~~~~~~~~~~~~ net/core/filter.c:4941:11: note: (near initialization for 'bpf_sk_release_proto.func') net/core/filter.c:4980:1: error: invalid storage class for function 'bpf_base_func_proto' bpf_base_func_proto(enum bpf_func_id func_id) ^~~~~~~~~~~~~~~~~~~ net/core/filter.c:5009:1: error: invalid storage class for function 'sock_filter_func_proto' sock_filter_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5025:1: error: invalid storage class for function 'sock_addr_func_proto' sock_addr_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5051:1: error: invalid storage class for function 'sk_filter_func_proto' sk_filter_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5068:1: error: invalid storage class for function 'cg_skb_func_proto' cg_skb_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~ net/core/filter.c:5079:1: error: invalid storage class for function 'tc_cls_act_func_proto' tc_cls_act_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5166:1: error: invalid storage class for function 'xdp_func_proto' xdp_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~ net/core/filter.c:5193:1: error: invalid storage class for function 'sock_ops_func_proto' sock_ops_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~ net/core/filter.c:5216:1: error: invalid storage class for function 'sk_msg_func_proto' sk_msg_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~ net/core/filter.c:5237:1: error: invalid storage class for function 'sk_skb_func_proto' sk_skb_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~ net/core/filter.c:5272:1: error: invalid storage class for function 'lwt_out_func_proto' lwt_out_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~ net/core/filter.c:5299:1: error: invalid storage class for function 'lwt_in_func_proto' lwt_in_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~ net/core/filter.c:5310:1: error: invalid storage class for function 'lwt_xmit_func_proto' lwt_xmit_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~ net/core/filter.c:5345:1: error: invalid storage class for function 'lwt_seg6local_func_proto' lwt_seg6local_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5361:13: error: invalid storage class for function 'bpf_skb_is_valid_access' static bool bpf_skb_is_valid_access(int off, int size, enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5404:13: error: invalid storage class for function 'sk_filter_is_valid_access' static bool sk_filter_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5430:13: error: invalid storage class for function 'lwt_is_valid_access' static bool lwt_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~ net/core/filter.c:5466:13: error: invalid storage class for function '__sock_filter_check_attach_type' static bool __sock_filter_check_attach_type(int off, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5509:13: error: invalid storage class for function '__sock_filter_check_size' static bool __sock_filter_check_size(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5536:13: error: invalid storage class for function 'sock_filter_is_valid_access' static bool sock_filter_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5547:12: error: invalid storage class for function 'bpf_unclone_prologue' static int bpf_unclone_prologue(struct bpf_insn *insn_buf, bool direct_write, ^~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5586:12: error: invalid storage class for function 'bpf_gen_ld_abs' static int bpf_gen_ld_abs(const struct bpf_insn *orig, ^~~~~~~~~~~~~~ net/core/filter.c:5621:12: error: invalid storage class for function 'tc_cls_act_prologue' static int tc_cls_act_prologue(struct bpf_insn *insn_buf, bool direct_write, ^~~~~~~~~~~~~~~~~~~ net/core/filter.c:5627:13: error: invalid storage class for function 'tc_cls_act_is_valid_access' static bool tc_cls_act_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5662:13: error: invalid storage class for function '__is_valid_xdp_access' static bool __is_valid_xdp_access(int off, int size) ^~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5674:13: error: invalid storage class for function 'xdp_is_valid_access' static bool xdp_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:7, from include/linux/list.h:9, from include/linux/module.h:9, from net/core/filter.c:24: >> net/core/filter.c:5712:19: error: non-static declaration of 'bpf_warn_invalid_xdp_action' follows static declaration EXPORT_SYMBOL_GPL(bpf_warn_invalid_xdp_action); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:79:21: note: in definition of macro '___EXPORT_SYMBOL' extern typeof(sym) sym; \ ^~~ net/core/filter.c:5712:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' EXPORT_SYMBOL_GPL(bpf_warn_invalid_xdp_action); ^~~~~~~~~~~~~~~~~ net/core/filter.c:5704:6: note: previous definition of 'bpf_warn_invalid_xdp_action' was here void bpf_warn_invalid_xdp_action(u32 act) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5714:13: error: invalid storage class for function 'sock_addr_is_valid_access' static bool sock_addr_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5801:13: error: invalid storage class for function 'sock_ops_is_valid_access' static bool sock_ops_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5842:12: error: invalid storage class for function 'sk_skb_prologue' static int sk_skb_prologue(struct bpf_insn *insn_buf, bool direct_write, ^~~~~~~~~~~~~~~ net/core/filter.c:5848:13: error: invalid storage class for function 'sk_skb_is_valid_access' static bool sk_skb_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5883:13: error: invalid storage class for function 'sk_msg_is_valid_access' static bool sk_msg_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:5915:12: error: invalid storage class for function 'bpf_convert_ctx_access' static u32 bpf_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:6318:12: error: invalid storage class for function 'tc_cls_act_convert_ctx_access' static u32 tc_cls_act_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:6342:12: error: invalid storage class for function 'xdp_convert_ctx_access' static u32 xdp_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:6462:12: error: invalid storage class for function 'sock_addr_convert_ctx_access' static u32 sock_addr_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:6551:12: error: invalid storage class for function 'sock_ops_convert_ctx_access' static u32 sock_ops_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:6890:12: error: invalid storage class for function 'sk_skb_convert_ctx_access' static u32 sk_skb_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~ net/core/filter.c:6915:12: error: invalid storage class for function 'sk_msg_convert_ctx_access' static u32 sk_msg_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/kernel.h:7, from include/linux/list.h:9, from include/linux/module.h:9, from net/core/filter.c:24: >> net/core/filter.c:7190:19: error: non-static declaration of 'sk_detach_filter' follows static declaration EXPORT_SYMBOL_GPL(sk_detach_filter); ^~~~~~~~~~~~~~~~ include/linux/export.h:79:21: note: in definition of macro '___EXPORT_SYMBOL' extern typeof(sym) sym; \ ^~~ net/core/filter.c:7190:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL' EXPORT_SYMBOL_GPL(sk_detach_filter); ^~~~~~~~~~~~~~~~~ net/core/filter.c:7172:5: note: previous definition of 'sk_detach_filter' was here int sk_detach_filter(struct sock *sk) ^~~~~~~~~~~~~~~~ net/core/filter.c:7247:13: error: invalid storage class for function 'bpf_init_reuseport_kern' static void bpf_init_reuseport_kern(struct sk_reuseport_kern *reuse_kern, ^~~~~~~~~~~~~~~~~~~~~~~ In file included from include/net/sock.h:64, from include/linux/sock_diag.h:8, from net/core/filter.c:29: include/linux/filter.h:432:6: error: invalid storage class for function '____sk_select_reuseport' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^~~~ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net/core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net/core/filter.c:7277:12: error: static declaration of 'sk_select_reuseport' follows non-static declaration BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~~~~~~~~~~ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ net/core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net/core/filter.c:7277:12: note: previous declaration of 'sk_select_reuseport' was here BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~~~~~~~~~~ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ net/core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net/core/filter.c: In function 'sk_select_reuseport': include/linux/filter.h:436:10: error: implicit declaration of function '____sk_select_reuseport'; did you mean 'sk_select_reuseport'? [-Werror=implicit-function-declaration] return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\ ^~~~ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net/core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net/core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____sk_select_reuseport' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^~~~ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net/core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net/core/filter.c:7323:20: error: initializer element is not constant .func = sk_select_reuseport, ^~~~~~~~~~~~~~~~~~~ net/core/filter.c:7323:20: note: (near initialization for 'sk_select_reuseport_proto.func') In file included from include/net/sock.h:64, from include/linux/sock_diag.h:8, from net/core/filter.c:29: include/linux/filter.h:432:6: error: invalid storage class for function '____sk_reuseport_load_bytes' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^~~~ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net/core/filter.c:7332:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~ net/core/filter.c:7332:12: error: static declaration of 'sk_reuseport_load_bytes' follows non-static declaration BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ net/core/filter.c:7332:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~ net/core/filter.c:7332:12: note: previous declaration of 'sk_reuseport_load_bytes' was here BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ net/core/filter.c:7332:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~ net/core/filter.c: In function 'sk_reuseport_load_bytes': include/linux/filter.h:436:10: error: implicit declaration of function '____sk_reuseport_load_bytes'; did you mean 'sk_reuseport_load_bytes'? [-Werror=implicit-function-declaration] vim +/bpf_warn_invalid_xdp_action +5712 net/core/filter.c 6a773a15a Brenden Blanco 2016-07-19 5673 6a773a15a Brenden Blanco 2016-07-19 @5674 static bool xdp_is_valid_access(int off, int size, 6a773a15a Brenden Blanco 2016-07-19 5675 enum bpf_access_type type, 5e43f899b Andrey Ignatov 2018-03-30 5676 const struct bpf_prog *prog, 239946314 Yonghong Song 2017-06-22 5677 struct bpf_insn_access_aux *info) 6a773a15a Brenden Blanco 2016-07-19 5678 { 0d8300325 Jakub Kicinski 2018-05-08 5679 if (type == BPF_WRITE) { 0d8300325 Jakub Kicinski 2018-05-08 5680 if (bpf_prog_is_dev_bound(prog->aux)) { 0d8300325 Jakub Kicinski 2018-05-08 5681 switch (off) { 0d8300325 Jakub Kicinski 2018-05-08 5682 case offsetof(struct xdp_md, rx_queue_index): 0d8300325 Jakub Kicinski 2018-05-08 5683 return __is_valid_xdp_access(off, size); 0d8300325 Jakub Kicinski 2018-05-08 5684 } 0d8300325 Jakub Kicinski 2018-05-08 5685 } 6a773a15a Brenden Blanco 2016-07-19 5686 return false; 0d8300325 Jakub Kicinski 2018-05-08 5687 } 6a773a15a Brenden Blanco 2016-07-19 5688 6a773a15a Brenden Blanco 2016-07-19 5689 switch (off) { 6a773a15a Brenden Blanco 2016-07-19 5690 case offsetof(struct xdp_md, data): 239946314 Yonghong Song 2017-06-22 5691 info->reg_type = PTR_TO_PACKET; 6a773a15a Brenden Blanco 2016-07-19 5692 break; de8f3a83b Daniel Borkmann 2017-09-25 5693 case offsetof(struct xdp_md, data_meta): de8f3a83b Daniel Borkmann 2017-09-25 5694 info->reg_type = PTR_TO_PACKET_META; de8f3a83b Daniel Borkmann 2017-09-25 5695 break; 6a773a15a Brenden Blanco 2016-07-19 5696 case offsetof(struct xdp_md, data_end): 239946314 Yonghong Song 2017-06-22 5697 info->reg_type = PTR_TO_PACKET_END; 6a773a15a Brenden Blanco 2016-07-19 5698 break; 6a773a15a Brenden Blanco 2016-07-19 5699 } 6a773a15a Brenden Blanco 2016-07-19 5700 1afaf661b Daniel Borkmann 2016-12-04 5701 return __is_valid_xdp_access(off, size); 6a773a15a Brenden Blanco 2016-07-19 5702 } 6a773a15a Brenden Blanco 2016-07-19 5703 6a773a15a Brenden Blanco 2016-07-19 5704 void bpf_warn_invalid_xdp_action(u32 act) 6a773a15a Brenden Blanco 2016-07-19 5705 { 9beb8bedb Daniel Borkmann 2017-09-09 5706 const u32 act_max = XDP_REDIRECT; 9beb8bedb Daniel Borkmann 2017-09-09 5707 9beb8bedb Daniel Borkmann 2017-09-09 5708 WARN_ONCE(1, "%s XDP return value %u, expect packet loss!\n", 9beb8bedb Daniel Borkmann 2017-09-09 5709 act > act_max ? "Illegal" : "Driver unsupported", 9beb8bedb Daniel Borkmann 2017-09-09 5710 act); 6a773a15a Brenden Blanco 2016-07-19 5711 } 6a773a15a Brenden Blanco 2016-07-19 @5712 EXPORT_SYMBOL_GPL(bpf_warn_invalid_xdp_action); 6a773a15a Brenden Blanco 2016-07-19 5713 :::::: The code at line 5712 was first introduced by commit :::::: 6a773a15a1e8874e5eccd2f29190c31085912c95 bpf: add XDP prog type for early driver filter :::::: TO: Brenden Blanco :::::: CC: David S. Miller --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --CE+1k2dSO48ffgeK Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 --CE+1k2dSO48ffgeK--