Message ID | 20200115171333.28811-2-kpsingh@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | MAC and Audit policy using eBPF (KRSI) | expand |
Hi KP, Thank you for the patch! Yet something to improve: [auto build test ERROR on next-20200116] [cannot apply to bpf-next/master bpf/master linus/master security/next-testing v5.5-rc6 v5.5-rc5 v5.5-rc4 v5.5-rc6] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/KP-Singh/MAC-and-Audit-policy-using-eBPF-KRSI/20200117-070342 base: 2747d5fdab78f43210256cd52fb2718e0b3cce74 config: nds32-defconfig (attached as .config) compiler: nds32le-linux-gcc (GCC) 9.2.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=9.2.0 make.cross ARCH=nds32 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from kernel/bpf/core.c:27: >> include/linux/btf.h:148:38: error: static declaration of 'btf_type_by_name_kind' follows non-static declaration 148 | static inline const struct btf_type *btf_type_by_name_kind( | ^~~~~~~~~~~~~~~~~~~~~ include/linux/btf.h:70:24: note: previous declaration of 'btf_type_by_name_kind' was here 70 | const struct btf_type *btf_type_by_name_kind( | ^~~~~~~~~~~~~~~~~~~~~ vim +/btf_type_by_name_kind +148 include/linux/btf.h 136 137 #ifdef CONFIG_BPF_SYSCALL 138 const struct btf_type *btf_type_by_id(const struct btf *btf, u32 type_id); 139 const char *btf_name_by_offset(const struct btf *btf, u32 offset); 140 struct btf *btf_parse_vmlinux(void); 141 struct btf *bpf_prog_get_target_btf(const struct bpf_prog *prog); 142 #else 143 static inline const struct btf_type *btf_type_by_id(const struct btf *btf, 144 u32 type_id) 145 { 146 return NULL; 147 } > 148 static inline const struct btf_type *btf_type_by_name_kind( 149 struct btf *btf, const char *name, u8 kind) 150 { 151 return ERR_PTR(-EOPNOTSUPP); 152 } 153 static inline const char *btf_name_by_offset(const struct btf *btf, 154 u32 offset) 155 { 156 return NULL; 157 } 158 #endif 159 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
Thanks! I have fixed this in the v3 of the series. btf_find_by_name_kind is independant of CONFIG_BPF_SYSCALL and btf_type_by_name_kind needs to be as well. The mistake was adding a static inline definition of the function in the !CONFIG_BPF_SYSCALL section which is not needed in this case. - KP On 18-Jan 20:44, kbuild test robot wrote: > Hi KP, > > Thank you for the patch! Yet something to improve: > > [auto build test ERROR on next-20200116] > [cannot apply to bpf-next/master bpf/master linus/master security/next-testing v5.5-rc6 v5.5-rc5 v5.5-rc4 v5.5-rc6] > [if your patch is applied to the wrong git tree, please drop us a note to help > improve the system. BTW, we also suggest to use '--base' option to specify the > base tree in git format-patch, please see https://stackoverflow.com/a/37406982] > > url: https://github.com/0day-ci/linux/commits/KP-Singh/MAC-and-Audit-policy-using-eBPF-KRSI/20200117-070342 > base: 2747d5fdab78f43210256cd52fb2718e0b3cce74 > config: nds32-defconfig (attached as .config) > compiler: nds32le-linux-gcc (GCC) 9.2.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=9.2.0 make.cross ARCH=nds32 > > If you fix the issue, kindly add following tag > Reported-by: kbuild test robot <lkp@intel.com> > > All errors (new ones prefixed by >>): > > In file included from kernel/bpf/core.c:27: > >> include/linux/btf.h:148:38: error: static declaration of 'btf_type_by_name_kind' follows non-static declaration > 148 | static inline const struct btf_type *btf_type_by_name_kind( > | ^~~~~~~~~~~~~~~~~~~~~ > include/linux/btf.h:70:24: note: previous declaration of 'btf_type_by_name_kind' was here > 70 | const struct btf_type *btf_type_by_name_kind( > | ^~~~~~~~~~~~~~~~~~~~~ > > vim +/btf_type_by_name_kind +148 include/linux/btf.h > > 136 > 137 #ifdef CONFIG_BPF_SYSCALL > 138 const struct btf_type *btf_type_by_id(const struct btf *btf, u32 type_id); > 139 const char *btf_name_by_offset(const struct btf *btf, u32 offset); > 140 struct btf *btf_parse_vmlinux(void); > 141 struct btf *bpf_prog_get_target_btf(const struct bpf_prog *prog); > 142 #else > 143 static inline const struct btf_type *btf_type_by_id(const struct btf *btf, > 144 u32 type_id) > 145 { > 146 return NULL; > 147 } > > 148 static inline const struct btf_type *btf_type_by_name_kind( > 149 struct btf *btf, const char *name, u8 kind) > 150 { > 151 return ERR_PTR(-EOPNOTSUPP); > 152 } > 153 static inline const char *btf_name_by_offset(const struct btf *btf, > 154 u32 offset) > 155 { > 156 return NULL; > 157 } > 158 #endif > 159 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
diff --git a/include/linux/btf.h b/include/linux/btf.h index 881e9b76ef49..dc650d294bc4 100644 --- a/include/linux/btf.h +++ b/include/linux/btf.h @@ -15,6 +15,7 @@ struct btf_type; union bpf_attr; extern const struct file_operations btf_fops; +extern struct btf *btf_vmlinux; void btf_put(struct btf *btf); int btf_new_fd(const union bpf_attr *attr); @@ -66,6 +67,8 @@ const struct btf_type * btf_resolve_size(const struct btf *btf, const struct btf_type *type, u32 *type_size, const struct btf_type **elem_type, u32 *total_nelems); +const struct btf_type *btf_type_by_name_kind( + struct btf *btf, const char *name, u8 kind); #define for_each_member(i, struct_type, member) \ for (i = 0, member = btf_type_member(struct_type); \ @@ -142,6 +145,11 @@ static inline const struct btf_type *btf_type_by_id(const struct btf *btf, { return NULL; } +static inline const struct btf_type *btf_type_by_name_kind( + struct btf *btf, const char *name, u8 kind) +{ + return ERR_PTR(-EOPNOTSUPP); +} static inline const char *btf_name_by_offset(const struct btf *btf, u32 offset) { diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 832b5d7fd892..b8968cec8718 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -436,6 +436,23 @@ const struct btf_type *btf_type_resolve_func_ptr(const struct btf *btf, return NULL; } +const struct btf_type *btf_type_by_name_kind( + struct btf *btf, const char *name, u8 kind) +{ + const struct btf_type *t; + s32 type_id; + + type_id = btf_find_by_name_kind(btf, name, kind); + if (type_id < 0) + return ERR_PTR(-EINVAL); + + t = btf_type_by_id(btf, type_id); + if (!t) + return ERR_PTR(-EINVAL); + + return t; +} + /* Types that act only as a source, not sink or intermediate * type when resolving. */