Re: [PATCH bpf-next v6] bpf: Support 64-bit pointers to kfuncs

kernel test robot
2023-04-06T00:26:44Z

Hi Ilya,

kernel test robot noticed the following build errors:

[auto build test ERROR on bpf-next/master]

url: https://github.com/intel-lab-lkp/linux/commits/Ilya-Leoshkevich/bpf-Support-64-bit-pointers-to-kfuncs/20230406-053713
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
patch link: https://lore.kernel.org/r/20230405213453.49756-1-iii%40linux.ibm.com
patch subject: [PATCH bpf-next v6] bpf: Support 64-bit pointers to kfuncs
config: i386-randconfig-c001-20230403 (https://download.01.org/0day-ci/archive/20230406/202304060822.L9VsdUzS-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/2a9559efd98d24493ac5c889a3ae03dd66b0de26
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Ilya-Leoshkevich/bpf-Support-64-bit-pointers-to-kfuncs/20230406-053713
git checkout 2a9559efd98d24493ac5c889a3ae03dd66b0de26
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=i386 olddefconfig
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202304060822.L9VsdUzS-lkp@intel.com/

All errors (new ones prefixed by >>):

ld: kernel/bpf/core.o: in function `bpf_jit_get_func_addr':
>> kernel/bpf/core.c:1207: undefined reference to `bpf_get_kfunc_addr'

vim +1207 kernel/bpf/core.c

1182
1183 int bpf_jit_get_func_addr(const struct bpf_prog *prog,
1184 const struct bpf_insn *insn, bool extra_pass,
1185 u64 *func_addr, bool *func_addr_fixed)
1186 {
1187 s16 off = insn->off;
1188 s32 imm = insn->imm;
1189 u8 *addr;
1190 int err;
1191
1192 *func_addr_fixed = insn->src_reg != BPF_PSEUDO_CALL;
1193 if (!*func_addr_fixed) {
1194 /* Place-holder address till the last pass has collected
1195 * all addresses for JITed subprograms in which case we
1196 * can pick them up from prog->aux.
1197 */
1198 if (!extra_pass)
1199 addr = NULL;
1200 else if (prog->aux->func &&
1201 off >= 0 && off < prog->aux->func_cnt)
1202 addr = (u8 *)prog->aux->func[off]->bpf_func;
1203 else
1204 return -EINVAL;
1205 } else if (insn->src_reg == BPF_PSEUDO_KFUNC_CALL &&
1206 bpf_jit_supports_far_kfunc_call()) {
> 1207 err = bpf_get_kfunc_addr(prog, insn->imm, insn->off, &addr);
1208 if (err)
1209 return err;
1210 } else {
1211 /* Address of a BPF helper call. Since part of the core
1212 * kernel, it's always at a fixed location. __bpf_call_base
1213 * and the helper with imm relative to it are both in core
1214 * kernel.
1215 */
1216 addr = (u8 *)__bpf_call_base + imm;
1217 }
1218
1219 *func_addr = (unsigned long)addr;
1220 return 0;
1221 }
1222

--
0-DAY CI Kernel Test Service