[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