Re: [bpf-next v7 1/5] bpf: Move constants blinding from JIT to verifier
From: Xu Kuohai
Date: Mon Mar 09 2026 - 05:23:20 EST
On 3/8/2026 1:08 AM, kernel test robot wrote:
Hi Xu,
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/Xu-Kuohai/bpf-Move-constants-blinding-from-JIT-to-verifier/20260307-181538
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
patch link: https://lore.kernel.org/r/20260307103949.2340104-2-xukuohai%40huaweicloud.com
patch subject: [bpf-next v7 1/5] bpf: Move constants blinding from JIT to verifier
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260307/202603071836.igZbCyrE-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260307/202603071836.igZbCyrE-lkp@xxxxxxxxx/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603071836.igZbCyrE-lkp@xxxxxxxxx/
All errors (new ones prefixed by >>):
23100 | err = bpf_jit_blind_constants(env);kernel/bpf/verifier.c:23100:9: error: call to undeclared function 'bpf_jit_blind_constants'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
| ^
1 error generated.
oops, it's not defined when CONFIG_BPF_JIT is not enabled
vim +/bpf_jit_blind_constants +23100 kernel/bpf/verifier.c
23087
23088 static int fixup_call_args(struct bpf_verifier_env *env)
23089 {
23090 #ifndef CONFIG_BPF_JIT_ALWAYS_ON
23091 struct bpf_prog *prog = env->prog;
23092 struct bpf_insn *insn = prog->insnsi;
23093 bool has_kfunc_call = bpf_prog_has_kfunc_call(prog);
23094 int i, depth;
23095 #endif
23096 int err = 0;
23097
23098 if (env->prog->jit_requested &&
23099 !bpf_prog_is_offloaded(env->prog->aux)) {
23100 err = bpf_jit_blind_constants(env);
23101 if (err)
23102 return err;
23103 err = jit_subprogs(env);
23104 if (err == 0)
23105 return 0;
23106 if (err == -EFAULT)
23107 return err;
23108 }
23109 #ifndef CONFIG_BPF_JIT_ALWAYS_ON
23110 if (has_kfunc_call) {
23111 verbose(env, "calling kernel functions are not allowed in non-JITed programs\n");
23112 return -EINVAL;
23113 }
23114 if (env->subprog_cnt > 1 && env->prog->aux->tail_call_reachable) {
23115 /* When JIT fails the progs with bpf2bpf calls and tail_calls
23116 * have to be rejected, since interpreter doesn't support them yet.
23117 */
23118 verbose(env, "tail_calls are not allowed in non-JITed programs with bpf-to-bpf calls\n");
23119 return -EINVAL;
23120 }
23121 for (i = 0; i < prog->len; i++, insn++) {
23122 if (bpf_pseudo_func(insn)) {
23123 /* When JIT fails the progs with callback calls
23124 * have to be rejected, since interpreter doesn't support them yet.
23125 */
23126 verbose(env, "callbacks are not allowed in non-JITed programs\n");
23127 return -EINVAL;
23128 }
23129
23130 if (!bpf_pseudo_call(insn))
23131 continue;
23132 depth = get_callee_stack_depth(env, insn, i);
23133 if (depth < 0)
23134 return depth;
23135 bpf_patch_call_args(insn, depth);
23136 }
23137 err = 0;
23138 #endif
23139 return err;
23140 }
23141