All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>, bpf@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev, daniel@iogearbox.net,
	andrii@kernel.org, eddyz87@gmail.com, memxor@gmail.com
Subject: Re: [PATCH bpf 51/81] bpf: Check stack and count calls of recursive subprogs at run time
Date: Mon, 26 Oct 2026 20:51:11 +0800	[thread overview]
Message-ID: <202610262057.WlLdhg8d-lkp@intel.com> (raw)
In-Reply-To: <20261026025943.404450-52-alexei.starovoitov@gmail.com>

Hi Alexei,

kernel test robot noticed the following build errors:

[auto build test ERROR on bpf/master]

url:    https://github.com/intel-lab-lkp/linux/commits/Alexei-Starovoitov/selftests-bpf-Remove-tests-for-global-data-in-arena/20261026-025822
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git master
patch link:    https://lore.kernel.org/r/20261026025943.404450-52-alexei.starovoitov%40gmail.com
patch subject: [PATCH bpf 51/81] bpf: Check stack and count calls of recursive subprogs at run time
config: powerpc-randconfig-1000-20261026 (https://download.01.org/0day-ci/archive/20261026/202610262057.WlLdhg8d-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261026/202610262057.WlLdhg8d-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610262057.WlLdhg8d-lkp@intel.com/

All errors (new ones prefixed by >>):

   kernel/bpf/fixups.c: In function 'bpf_insert_recursion_checks':
>> kernel/bpf/fixups.c:792:28: error: macro "__fortify_memcpy_chk" passed 9 arguments, but takes just 8
             2 * sizeof(buf[0]));
                               ^
   In file included from include/linux/string.h:396,
                    from include/crypto/sha2.h:10,
                    from include/linux/bpf.h:11,
                    from kernel/bpf/fixups.c:3:
>> include/linux/fortify-string.h:638:26: error: '__fortify_memcpy_chk' undeclared (first use in this function); did you mean 'fortify_memcpy_chk'?
    #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,   \
                             ^~~~~~~~~~~~~~~~~~~~
   kernel/bpf/fixups.c:791:3: note: in expansion of macro 'memcpy'
      memcpy(buf + n, (struct bpf_insn[]){ BPF_LD_IMM64(BPF_REG_0, (long)depth) },
      ^~~~~~
   include/linux/fortify-string.h:638:26: note: each undeclared identifier is reported only once for each function it appears in
    #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,   \
                             ^~~~~~~~~~~~~~~~~~~~
   kernel/bpf/fixups.c:791:3: note: in expansion of macro 'memcpy'
      memcpy(buf + n, (struct bpf_insn[]){ BPF_LD_IMM64(BPF_REG_0, (long)depth) },
      ^~~~~~
   kernel/bpf/fixups.c:834:27: error: macro "__fortify_memcpy_chk" passed 9 arguments, but takes just 8
            2 * sizeof(buf[0]));
                              ^
   kernel/bpf/fixups.c:865:28: error: macro "__fortify_memcpy_chk" passed 9 arguments, but takes just 8
             2 * sizeof(buf[0]));
                               ^


vim +/__fortify_memcpy_chk +792 kernel/bpf/fixups.c

   696	
   697	/*
   698	 * How deep a recursion goes is not known, so it is counted at run time. In the same
   699	 * spirit as may_goto: the program goes on for as long as there is budget and
   700	 * takes a way out that was verified when there is none.
   701	 *
   702	 * Every subprog on a cycle of the call graph adds its weight to a per-cpu
   703	 * counter of the program when it is entered and takes it back at every exit.
   704	 * The weight is the part of the budget that its frame takes: of the stack
   705	 * room, or of the room in the stack in arena, whichever is larger. So these
   706	 * frames take no more than BPF_RECURSION_STACK, on top of the chain of calls
   707	 * without recursion that check_max_stack_depth() looked at.
   708	 *
   709	 * A subprog that calls itself twice doesn't have to go deep to go on forever. So
   710	 * the calls are counted too: BPF_MAX_LOOPS of them in a run of the prog, like the
   711	 * callbacks of bpf_loop(). Once they are used up every call returns at once, and
   712	 * the frames that are there come to an end.
   713	 *
   714	 * Another run of the program on the same cpu, in interrupt or after
   715	 * preemption, counts in the same counter. Then there is less for both.
   716	 */
   717	int bpf_insert_recursion_checks(struct bpf_verifier_env *env)
   718	{
   719		struct bpf_subprog_info *si = env->subprog_info;
   720		u32 frame, min_frame = U32_MAX, arena_frame = 0, arena_room = 0, weight;
   721		u32 limit = BPF_RECURSION_STACK;
   722		struct bpf_insn buf[24], first;
   723		struct bpf_prog *new_prog;
   724		struct bpf_recursion_budget __percpu *depth;
   725		/* Only this cpu touches the counters */
   726		int fetch_add = BPF_ADD | BPF_FETCH |
   727				(bpf_jit_supports_local_atomics() ? BPF_ATOMIC_LOCAL : 0);
   728		int i, s, n, bail, bail_len, err;
   729	
   730		for (s = 0; s < env->subprog_cnt; s++) {
   731			if (!si[s].recursive)
   732				continue;
   733			frame = recursive_frame_size(env, s);
   734			si[s].recursion_weight = DIV_ROUND_UP(frame * BPF_RECURSION_UNITS, limit);
   735			min_frame = min(min_frame, frame);
   736			arena_frame = max(arena_frame, si[s].arena_stack_depth);
   737		}
   738		if (min_frame == U32_MAX)
   739			return 0;
   740		if (arena_frame) {
   741			/*
   742			 * One more frame is for the subprog that finds that there is no
   743			 * budget: it has its frame by then.
   744			 */
   745			u32 room = BPF_ARENA_STACK_MAX - env->max_arena_stack_depth;
   746	
   747			if (room < 2 * arena_frame) {
   748				verbose(env, "no room in the stack in arena for recursion\n");
   749				return -EACCES;
   750			}
   751			/* no more than the frames that fit in the stack can take */
   752			arena_room = min(room - arena_frame, limit / min_frame * arena_frame);
   753			env->max_arena_stack_depth += arena_room + arena_frame;
   754		}
   755		for (s = 0; s < env->subprog_cnt; s++) {
   756			if (!si[s].recursive)
   757				continue;
   758			if (si[s].arena_stack_depth)
   759				si[s].recursion_weight = max(si[s].recursion_weight,
   760							     DIV_ROUND_UP(si[s].arena_stack_depth *
   761									  BPF_RECURSION_UNITS, arena_room));
   762			if (si[s].recursion_weight > BPF_RECURSION_UNITS) {
   763				verbose(env, "the frame of recursive %s() is too large\n",
   764					bpf_subprog_name(env, s));
   765				return -EACCES;
   766			}
   767		}
   768	
   769		depth = alloc_percpu_gfp(struct bpf_recursion_budget, GFP_KERNEL_ACCOUNT);
   770		if (!depth)
   771			return -ENOMEM;
   772		env->prog->aux->call_depth = depth;
   773		env->prog->jit_required = 1;
   774	
   775		/* From the last one, so that nothing moves in those that are yet to be done. */
   776		for (s = env->subprog_cnt - 1; s > 0; s--) {
   777			if (!si[s].recursive)
   778				continue;
   779			/*
   780			 * R0 has nothing at the entry. The address is not for AX:
   781			 * blinding of constants takes ld_imm64 apart with the help of
   782			 * AX. It leaves alone the insns that have AX in them.
   783			 */
   784			n = 0;
   785			first = env->prog->insnsi[si[s].start];
   786			/* The exit drops the frame in the stack in arena. Take it before the check. */
   787			if (is_arena_sp_adj(&first)) {
   788				buf[n++] = first;
   789				first = BPF_JMP_A(0);
   790			}
   791			memcpy(buf + n, (struct bpf_insn[]){ BPF_LD_IMM64(BPF_REG_0, (long)depth) },
 > 792			       2 * sizeof(buf[0]));
   793			n += 2;
   794			buf[n++] = BPF_MOV64_PERCPU_REG(BPF_REG_0, BPF_REG_0);
   795			weight = si[s].recursion_weight;
   796			bail_len = bpf_ret_reg_pair(env, s) ? 3 : 2;
   797			buf[n++] = BPF_MOV64_IMM(BPF_REG_AX, weight);
   798			buf[n++] = BPF_ATOMIC_OP(BPF_W, fetch_add, BPF_REG_0, BPF_REG_AX,
   799						 offsetof(struct bpf_recursion_budget, depth));
   800			buf[n++] = BPF_JMP_IMM(BPF_JGT, BPF_REG_AX, BPF_RECURSION_UNITS - weight, 3);
   801			buf[n++] = BPF_MOV64_IMM(BPF_REG_AX, 1);
   802			buf[n++] = BPF_ATOMIC_OP(BPF_W, fetch_add, BPF_REG_0, BPF_REG_AX,
   803						 offsetof(struct bpf_recursion_budget, calls));
   804			buf[n++] = BPF_JMP_IMM(BPF_JLT, BPF_REG_AX, BPF_MAX_LOOPS, bail_len);
   805			bail = n;
   806			buf[n++] = BPF_MOV64_IMM(BPF_REG_0, 0);
   807			if (bpf_ret_reg_pair(env, s))
   808				buf[n++] = BPF_MOV64_IMM(BPF_REG_2, 0);
   809			buf[n++] = budget_exit_insn(env, &si[s]);
   810			buf[n] = first;
   811			err = bpf_adj_moved_insn(&buf[n], n);
   812			if (err) {
   813				verbose(env, "insn %d cannot be patched due to 16-bit range\n",
   814					env->insn_aux_data[si[s].start].orig_idx);
   815				return err;
   816			}
   817			n++;
   818			new_prog = __bpf_patch_insn_data(env, si[s].start, buf, n, BPF_PATCH_MOVE_TARGET);
   819			if (!new_prog)
   820				return -ENOMEM;
   821			env->prog = new_prog;
   822			env->insn_aux_data[si[s].start + bail].recursion_bail = true;
   823			/* calls get to the check, jumps to the first insn do not */
   824			err = adjust_jmp_off(env->prog, si[s].start, n - 1);
   825			if (err)
   826				return err;
   827		}
   828	
   829		/*
   830		 * The calls are counted anew when a run begins. For async callbacks see
   831		 * bpf_prog_begin_run(). R0 has nothing at the entry.
   832		 */
   833		memcpy(buf, (struct bpf_insn[]){ BPF_LD_IMM64(BPF_REG_0, (long)depth) },
   834		       2 * sizeof(buf[0]));
   835		buf[2] = BPF_MOV64_PERCPU_REG(BPF_REG_0, BPF_REG_0);
   836		/* calls and reported */
   837		buf[3] = BPF_ST_MEM(BPF_DW, BPF_REG_0, 0, 0);
   838		buf[4] = env->prog->insnsi[0];
   839		err = bpf_adj_moved_insn(&buf[4], 4);
   840		if (err) {
   841			verbose(env, "insn %d cannot be patched due to 16-bit range\n",
   842				env->insn_aux_data[0].orig_idx);
   843			return err;
   844		}
   845		new_prog = __bpf_patch_insn_data(env, 0, buf, 5, BPF_PATCH_MOVE_TARGET);
   846		if (!new_prog)
   847			return -ENOMEM;
   848		env->prog = new_prog;
   849		/* a jump to the first insn doesn't begin a run */
   850		err = adjust_jmp_off(env->prog, 0, 4);
   851		if (err)
   852			return err;
   853	
   854		/* R1 is nothing to the caller. Jumps to exit get to what is added. */
   855		for (i = 0; i < env->prog->len; i++) {
   856			if (bpf_is_ldimm64(&env->prog->insnsi[i])) {
   857				i++;
   858				continue;
   859			}
   860			if (env->prog->insnsi[i].code != (BPF_JMP | BPF_EXIT) ||
   861			    !bpf_find_containing_subprog(env, i)->recursive)
   862				continue;
   863			n = 0;
   864			memcpy(buf, (struct bpf_insn[]){ BPF_LD_IMM64(BPF_REG_1, (long)depth) },
   865			       2 * sizeof(buf[0]));
   866			n += 2;
   867			buf[n++] = BPF_MOV64_PERCPU_REG(BPF_REG_1, BPF_REG_1);
   868			weight = bpf_find_containing_subprog(env, i)->recursion_weight;
   869			buf[n++] = BPF_MOV64_IMM(BPF_REG_AX, -(int)weight);
   870			buf[n++] = BPF_ATOMIC_OP(BPF_W, fetch_add, BPF_REG_1, BPF_REG_AX,
   871						 offsetof(struct bpf_recursion_budget, depth));
   872			buf[n++] = env->prog->insnsi[i];
   873			new_prog = bpf_patch_insn_data(env, i, buf, n);
   874			if (!new_prog)
   875				return -ENOMEM;
   876			env->prog = new_prog;
   877			i += n - 1;
   878		}
   879		return 0;
   880	}
   881	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  parent reply	other threads:[~2026-10-26 12:51 UTC|newest]

Thread overview: 148+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-26  2:58 [PATCH bpf 00/81] bpf: Stack in arena and a verifier that joins states Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 01/81] selftests/bpf: Remove tests for global data in arena Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 02/81] libbpf: Remove .arena.data Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 03/81] libbpf: Keep format strings of bpf_printk() in .rodata Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 04/81] selftests/bpf: Remove tests for arena access through numbers Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 05/81] bpf: Remove BPF_F_ARENA_SCALAR Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 06/81] bpf, x86: Remove r0_on_stack from fetching atomics in arena Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 07/81] bpf: One time slice of may_goto for a run of a prog Alexei Starovoitov
2026-10-26 12:50   ` kernel test robot
2026-10-26 14:43   ` kernel test robot
2026-10-26 17:35   ` Kumar Kartikeya Dwivedi
2026-10-27 16:39     ` Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 08/81] selftests/bpf: Test may_goto in a loop that calls a subprog that spins Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 09/81] bpf: Clear delta of a register that scalar evolution widens Alexei Starovoitov
2026-10-26 20:09   ` Daniel Borkmann
2026-10-27 21:23     ` Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 10/81] selftests/bpf: Test that a widened register is not linked Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 11/81] selftests/bpf: Wait for the last maps of map_kptr to be freed Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 12/81] bpf: Don't widen a pointer to a buffer in scalar evolution Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 13/81] selftests/bpf: Test a loop that moves a pointer to a buffer Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 14/81] bpf: Fix a false verifier bug in the clamp of scalar evolution Alexei Starovoitov
2026-10-26 23:45   ` Eduard Zingerman
2026-10-27 16:32     ` Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 15/81] selftests/bpf: Test induction variables that come back out of range Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 16/81] libbpf: Make arena 1 Gbyte when max_entries is not set Alexei Starovoitov
2026-10-26 16:54   ` Andrii Nakryiko
2026-10-26 16:59     ` Kumar Kartikeya Dwivedi
2026-10-27  0:13       ` Alexei Starovoitov
2026-10-27 21:11         ` Kumar Kartikeya Dwivedi
2026-10-27 21:22           ` Alexei Starovoitov
2026-10-27 21:28             ` Andrii Nakryiko
2026-10-27 21:29               ` Kumar Kartikeya Dwivedi
2026-10-26  2:58 ` [PATCH bpf 17/81] selftests/bpf: Test the default size of arena Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 18/81] bpf: Treat addr_space_cast of a pointer that is not in arena as a move Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 19/81] selftests/bpf: Test addr_space_cast of pointers that are not in arena Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 20/81] libbpf: Support .bss.addr_space.1 section Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 21/81] libbpf: Relocate pointers that are stored in arena Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 22/81] selftests/bpf: Test pointers in arena and .bss.addr_space.1 Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 23/81] bpf: Introduce bpf register BPF_REG_ARENA_SP Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 24/81] bpf: Add stacks for programs to arena Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 25/81] bpf, x86: Add BPF_ATOMIC_LOCAL Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 26/81] bpf: Support BPF_REG_ARENA_SP in the verifier Alexei Starovoitov
2026-10-26 17:47   ` Kumar Kartikeya Dwivedi
2026-10-26 23:51     ` Alexei Starovoitov
2026-10-27  0:18       ` Kumar Kartikeya Dwivedi
2026-10-27 18:45         ` Alexei Starovoitov
2026-10-27 20:23           ` Kumar Kartikeya Dwivedi
2026-10-28  4:47             ` Alexei Starovoitov
2026-10-28 11:00               ` Kumar Kartikeya Dwivedi
2026-10-28 19:01                 ` Alexei Starovoitov
2026-10-29  0:07                   ` Kumar Kartikeya Dwivedi
2026-10-29  0:27                     ` Alexei Starovoitov
2026-10-29  0:57                     ` Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 27/81] bpf, x86: Support BPF_REG_ARENA_SP Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 28/81] bpf, arm64: " Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 29/81] selftests/bpf: Add tests for BPF_REG_ARENA_SP Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 30/81] bpf: Add bpf_arena_memcmp() and bpf_arena_memcpy() kfuncs Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 31/81] bpf: Add bpf_alloc() and bpf_free() kfuncs Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 32/81] bpf: Count stack arguments of a static subprog from its code Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:58 ` [PATCH bpf 33/81] selftests/bpf: Test static subprogs that don't take what BTF says Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 34/81] bpf: Let scalar evolution see loads from read-only maps Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 35/81] selftests/bpf: Test scalar evolution with a loop bound in .rodata Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 36/81] bpf: Helpers don't write through ARG_ANYTHING Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 37/81] selftests/bpf: Test scalar evolution with stack address as ARG_ANYTHING Alexei Starovoitov
2026-10-26  2:58 ` [PATCH bpf 38/81] bpf: Simplify (zext32 (zext32 x)) in scalar evolution Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 39/81] selftests/bpf: Test scalar evolution with a latch on a 32-bit copy Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 40/81] bpf: Keep the range of a packet pointer when a number >= 0 is added Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 41/81] selftests/bpf: Test range of a packet pointer after a number " Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 42/81] bpf: Allow BPF_MAX_SUBPROGS targets of a read from a table of functions Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 43/81] bpf: Tell user space that a run of a prog was cut short Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 44/81] bpf: Mask the count of a 32-bit shift in scalar evolution Alexei Starovoitov
2026-10-26  3:52   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 45/81] selftests/bpf: Expect the masked count of 32-bit shifts Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 46/81] bpf: Finish the insn in the state that maybe_fork_scalars() splits off Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 47/81] bpf: Add join of verifier states Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 48/81] bpf: Describe loops that scalar evolution cannot count exactly Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 49/81] selftests/bpf: Adjust tests to loops that are counted now Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 50/81] bpf: Add may_goto to the loops that the verifier marks Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 51/81] bpf: Check stack and count calls of recursive subprogs at run time Alexei Starovoitov
2026-10-26  4:09   ` bot+bpf-ci
2026-10-26 12:51   ` kernel test robot [this message]
2026-10-26  2:59 ` [PATCH bpf 52/81] bpf: Add the main pass as a fixpoint over the control flow graph Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 53/81] bpf: Verify programs " Alexei Starovoitov
2026-10-26  4:25   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 54/81] bpf: Allow 24 arguments of static subprogs Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 55/81] selftests/bpf: Test a static subprog with 24 arguments Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 56/81] bpf: Bump MAX_CALL_FRAMES to 32 Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 57/81] selftests/bpf: Test 32 and 33 call frames Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 58/81] bpf: Bump BPF_MAX_SUBPROGS to 1024 Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 59/81] selftests/bpf: Make room in veristat for the stats of 1024 subprogs Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 60/81] bpf: Remove is_state_visited() Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 61/81] bpf: Remove precision tracking Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 62/81] bpf: Remove prune points, levels of state comparison and pop_stack() Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 63/81] bpf: Print 0 as the limit in the statistics line Alexei Starovoitov
2026-10-26  3:52   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 64/81] bpf: Remove bpf_compute_scc() Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 65/81] bpf: Update comments about paths, pruning and explored states Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 66/81] bpf: Remove iter.depth Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 67/81] bpf: Remove leftovers of precision tracking and read marks Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 68/81] bpf: Track a pointer to one of a set of functions Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 69/81] bpf, docs: Rewrite verifier.rst Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 70/81] selftests/bpf: Adjust tests of precision tracking Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 71/81] selftests/bpf: Adjust tests of linked registers and spills Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 72/81] selftests/bpf: Adjust tests of pruning Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 73/81] selftests/bpf: Adjust tests of loops Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 74/81] selftests/bpf: Adjust tests of recursion Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 75/81] selftests/bpf: Adjust tests to the order of verification and to the log Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 76/81] selftests/bpf: Adjust tests of unprivileged progs Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 77/81] selftests/bpf: Test states that are not joined Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 78/81] selftests/bpf: Test progs that run out of budget Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26  2:59 ` [PATCH bpf 79/81] selftests/bpf: Test 'unwound' in bpf_prog_info Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 80/81] selftests/bpf: Test the stack in arena after recursion ran out of budget Alexei Starovoitov
2026-10-26  2:59 ` [PATCH bpf 81/81] selftests/bpf: Test callx of one of a set of functions Alexei Starovoitov
2026-10-26  3:53   ` bot+bpf-ci
2026-10-26 16:57 ` [PATCH bpf 00/81] bpf: Stack in arena and a verifier that joins states Ihor Solodrai
2026-10-26 23:53   ` Alexei Starovoitov
2026-10-27  0:04     ` Ihor Solodrai
2026-10-27  0:14       ` Alexei Starovoitov
2026-10-27  5:08         ` Ihor Solodrai
2026-10-26 22:28 ` Ihor Solodrai
2026-10-26 23:45   ` Alexei Starovoitov
2026-10-27  0:01     ` Ihor Solodrai
2026-10-27  0:13       ` Ihor Solodrai
2026-10-27  0:16       ` Alexei Starovoitov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202610262057.WlLdhg8d-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=andrii@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eddyz87@gmail.com \
    --cc=memxor@gmail.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.