Hi Hou, [FYI, it's a private test report for your RFC patch.] [auto build test ERROR on bpf/master] [also build test ERROR on v5.15-rc1 next-20210915] [cannot apply to bpf-next/master] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Hou-Tao/introduce-dummy-BPF-STRUCT_OPS/20210915-112614 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git master config: i386-buildonly-randconfig-r004-20210916 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 8cbbd7e0b2aa21ce7e416cfb63d9965518948c35) 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 # https://github.com/0day-ci/linux/commit/3eeddb24d6b805983fd6147abf5bcaa65091ab2b git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Hou-Tao/introduce-dummy-BPF-STRUCT_OPS/20210915-112614 git checkout 3eeddb24d6b805983fd6147abf5bcaa65091ab2b # save the attached .config to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): In file included from kernel/bpf/bpf_dummy_struct_ops.c:10: >> include/linux/bpf_dummy_ops.h:23:24: error: unexpected character struct bpf_dummy_ops {}; ^~ >> include/linux/bpf_dummy_ops.h:24:15: error: cannot combine with previous 'struct' declaration specifier static inline struct bpf_dummy_ops *bpf_get_dummy_ops(void) { return NULL; } ^ kernel/bpf/bpf_dummy_struct_ops.c:17:23: error: redefinition of 'bpf_get_dummy_ops' struct bpf_dummy_ops *bpf_get_dummy_ops(void) ^ include/linux/bpf_dummy_ops.h:24:37: note: previous definition is here static inline struct bpf_dummy_ops *bpf_get_dummy_ops(void) { return NULL; } ^ >> kernel/bpf/bpf_dummy_struct_ops.c:23:43: error: no member named 'owner' in 'struct bpf_dummy_ops' if (ops && !bpf_try_module_get(ops, ops->owner)) ~~~ ^ kernel/bpf/bpf_dummy_struct_ops.c:31:6: error: redefinition of 'bpf_put_dummy_ops' void bpf_put_dummy_ops(struct bpf_dummy_ops *ops) ^ include/linux/bpf_dummy_ops.h:25:20: note: previous definition is here static inline void bpf_put_dummy_ops(struct bpf_dummy_ops *ops) {} ^ kernel/bpf/bpf_dummy_struct_ops.c:33:27: error: no member named 'owner' in 'struct bpf_dummy_ops' bpf_module_put(ops, ops->owner); ~~~ ^ >> kernel/bpf/bpf_dummy_struct_ops.c:97:7: error: offsetof of incomplete type 'struct bpf_dummy_ops_state' case offsetof(struct bpf_dummy_ops_state, val): ^ ~~~~~~ include/linux/stddef.h:17:32: note: expanded from macro 'offsetof' #define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER) ^ ~~~~ include/linux/compiler_types.h:140:35: note: expanded from macro '__compiler_offsetof' #define __compiler_offsetof(a, b) __builtin_offsetof(a, b) ^ ~ kernel/bpf/bpf_dummy_struct_ops.c:97:23: note: forward declaration of 'struct bpf_dummy_ops_state' case offsetof(struct bpf_dummy_ops_state, val): ^ kernel/bpf/bpf_dummy_struct_ops.c:98:9: error: offsetof of incomplete type 'struct bpf_dummy_ops_state' end = offsetofend(struct bpf_dummy_ops_state, val); ^ ~~~~~~ include/linux/stddef.h:37:3: note: expanded from macro 'offsetofend' (offsetof(TYPE, MEMBER) + sizeof_field(TYPE, MEMBER)) ^ ~~~~ include/linux/stddef.h:17:32: note: expanded from macro 'offsetof' #define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER) ^ ~~~~ include/linux/compiler_types.h:140:35: note: expanded from macro '__compiler_offsetof' #define __compiler_offsetof(a, b) __builtin_offsetof(a, b) ^ ~ kernel/bpf/bpf_dummy_struct_ops.c:97:23: note: forward declaration of 'struct bpf_dummy_ops_state' case offsetof(struct bpf_dummy_ops_state, val): ^ >> kernel/bpf/bpf_dummy_struct_ops.c:98:9: error: incomplete definition of type 'struct bpf_dummy_ops_state' end = offsetofend(struct bpf_dummy_ops_state, val); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/stddef.h:37:28: note: expanded from macro 'offsetofend' (offsetof(TYPE, MEMBER) + sizeof_field(TYPE, MEMBER)) ^~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/stddef.h:28:55: note: expanded from macro 'sizeof_field' #define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER)) ~~~~~~~~~~~^ kernel/bpf/bpf_dummy_struct_ops.c:97:23: note: forward declaration of 'struct bpf_dummy_ops_state' case offsetof(struct bpf_dummy_ops_state, val): ^ 9 errors generated. vim +23 include/linux/bpf_dummy_ops.h 19 20 extern struct bpf_dummy_ops *bpf_get_dummy_ops(void); 21 extern void bpf_put_dummy_ops(struct bpf_dummy_ops *ops); 22 #else > 23 struct bpf_dummy_ops {}; > 24 static inline struct bpf_dummy_ops *bpf_get_dummy_ops(void) { return NULL; } 25 static inline void bpf_put_dummy_ops(struct bpf_dummy_ops *ops) {} 26 #endif 27 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org