[bpf-next v7 1/5] bpf: Move constants blinding from JIT to verifier
Xu Kuohai
xukuohai at huaweicloud.com
Mon Mar 9 02:22:54 PDT 2026
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@intel.com/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@intel.com/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 at intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202603071836.igZbCyrE-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
>>> 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]
> 23100 | err = bpf_jit_blind_constants(env);
> | ^
> 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
>
More information about the linux-arm-kernel
mailing list