Hi Andrii, I love your patch! Yet something to improve: [auto build test ERROR on bpf-next/master] url: https://github.com/0day-ci/linux/commits/Andrii-Nakryiko/BPF-XDP-link/20200714-120909 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master config: x86_64-defconfig (attached as .config) compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 02946de3802d3bc65bc9f2eb9b8d4969b5a7add8) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): >> net/core/dev.c:8717:18: error: field has incomplete type 'struct bpf_link' struct bpf_link link; ^ include/net/netns/bpf.h:15:9: note: forward declaration of 'struct bpf_link' struct bpf_link *links[MAX_NETNS_BPF_ATTACH_TYPE]; ^ >> net/core/dev.c:8992:34: error: variable has incomplete type 'const struct bpf_link_ops' static const struct bpf_link_ops bpf_xdp_link_lops = { ^ net/core/dev.c:8992:21: note: forward declaration of 'struct bpf_link_ops' static const struct bpf_link_ops bpf_xdp_link_lops = { ^ >> net/core/dev.c:9000:25: error: variable has incomplete type 'struct bpf_link_primer' struct bpf_link_primer link_primer; ^ net/core/dev.c:9000:9: note: forward declaration of 'struct bpf_link_primer' struct bpf_link_primer link_primer; ^ >> net/core/dev.c:9015:2: error: implicit declaration of function 'bpf_link_init' [-Werror,-Wimplicit-function-declaration] bpf_link_init(&link->link, BPF_LINK_TYPE_XDP, &bpf_xdp_link_lops, prog); ^ net/core/dev.c:9015:2: note: did you mean 'bio_list_init'? include/linux/bio.h:575:20: note: 'bio_list_init' declared here static inline void bio_list_init(struct bio_list *bl) ^ >> net/core/dev.c:9019:8: error: implicit declaration of function 'bpf_link_prime' [-Werror,-Wimplicit-function-declaration] err = bpf_link_prime(&link->link, &link_primer); ^ net/core/dev.c:9019:8: note: did you mean 'bpf_link_init'? net/core/dev.c:9015:2: note: 'bpf_link_init' declared here bpf_link_init(&link->link, BPF_LINK_TYPE_XDP, &bpf_xdp_link_lops, prog); ^ >> net/core/dev.c:9030:3: error: implicit declaration of function 'bpf_link_cleanup' [-Werror,-Wimplicit-function-declaration] bpf_link_cleanup(&link_primer); ^ net/core/dev.c:9030:3: note: did you mean 'tcf_idr_cleanup'? include/net/act_api.h:171:6: note: 'tcf_idr_cleanup' declared here void tcf_idr_cleanup(struct tc_action_net *tn, u32 index); ^ >> net/core/dev.c:9034:7: error: implicit declaration of function 'bpf_link_settle' [-Werror,-Wimplicit-function-declaration] fd = bpf_link_settle(&link_primer); ^ 7 errors generated. vim +8717 net/core/dev.c 8715 8716 struct bpf_xdp_link { > 8717 struct bpf_link link; 8718 struct net_device *dev; /* protected by rtnl_lock, no refcnt held */ 8719 int flags; 8720 }; 8721 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org