BPF List
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Eduard Zingerman <eddyz87@gmail.com>,
	bpf@vger.kernel.org, ast@kernel.org, andrii@kernel.org
Cc: oe-kbuild-all@lists.linux.dev, daniel@iogearbox.net,
	martin.lau@linux.dev, kernel-team@fb.com,
	yonghong.song@linux.dev, eddyz87@gmail.com
Subject: Re: [PATCH bpf-next 3/3] bpf: rename bpf_reg_state->off to bpf_reg_state->delta
Date: Thu, 12 Feb 2026 04:06:20 +0100	[thread overview]
Message-ID: <202602120439.lmbFn0nF-lkp@intel.com> (raw)
In-Reply-To: <20260211-ptrs-off-migration-v1-3-996c2a37b063@gmail.com>

Hi Eduard,

kernel test robot noticed the following build errors:

[auto build test ERROR on 4475cdac12c46fc26ee815de1b43cfe9f8375140]

url:    https://github.com/intel-lab-lkp/linux/commits/Eduard-Zingerman/bpf-split-check_reg_sane_offset-in-two-parts/20260212-063425
base:   4475cdac12c46fc26ee815de1b43cfe9f8375140
patch link:    https://lore.kernel.org/r/20260211-ptrs-off-migration-v1-3-996c2a37b063%40gmail.com
patch subject: [PATCH bpf-next 3/3] bpf: rename bpf_reg_state->off to bpf_reg_state->delta
config: x86_64-rhel-9.4-ltp (https://download.01.org/0day-ci/archive/20260212/202602120439.lmbFn0nF-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260212/202602120439.lmbFn0nF-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/202602120439.lmbFn0nF-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/net/ethernet/netronome/nfp/bpf/verifier.c: In function 'nfp_bpf_map_update_value_ok':
>> drivers/net/ethernet/netronome/nfp/bpf/verifier.c:101:19: error: 'const struct bpf_reg_state' has no member named 'off'
     101 |         off = reg3->off + reg3->var_off.value;
         |                   ^~
   drivers/net/ethernet/netronome/nfp/bpf/verifier.c: In function 'nfp_bpf_stack_arg_ok':
   drivers/net/ethernet/netronome/nfp/bpf/verifier.c:140:39: error: 'const struct bpf_reg_state' has no member named 'off'
     140 |         off = reg->var_off.value + reg->off;
         |                                       ^~
>> drivers/net/ethernet/netronome/nfp/bpf/verifier.c:150:60: error: 'struct bpf_reg_state' has no member named 'off'
     150 |         old_off = old_arg->reg.var_off.value + old_arg->reg.off;
         |                                                            ^
   drivers/net/ethernet/netronome/nfp/bpf/verifier.c: In function 'nfp_bpf_check_stack_access':
   drivers/net/ethernet/netronome/nfp/bpf/verifier.c:361:28: error: 'struct bpf_reg_state' has no member named 'off'
     361 |         old_off = meta->ptr.off + meta->ptr.var_off.value;
         |                            ^
   drivers/net/ethernet/netronome/nfp/bpf/verifier.c:362:22: error: 'const struct bpf_reg_state' has no member named 'off'
     362 |         new_off = reg->off + reg->var_off.value;
         |                      ^~
   drivers/net/ethernet/netronome/nfp/bpf/verifier.c: In function 'nfp_bpf_map_mark_used':
   drivers/net/ethernet/netronome/nfp/bpf/verifier.c:431:56: error: 'const struct bpf_reg_state' has no member named 'off'
     431 |         off = reg->var_off.value + meta->insn.off + reg->off;
         |                                                        ^~
--
   drivers/net/ethernet/netronome/nfp/bpf/jit.c: In function 'map_call_stack_common':
>> drivers/net/ethernet/netronome/nfp/bpf/jit.c:1734:64: error: 'struct bpf_reg_state' has no member named 'off'
    1734 |         lm_off += meta->arg2.reg.var_off.value + meta->arg2.reg.off;
         |                                                                ^
   drivers/net/ethernet/netronome/nfp/bpf/jit.c: In function 'mem_ldx':
   drivers/net/ethernet/netronome/nfp/bpf/jit.c:2878:47: error: 'struct bpf_reg_state' has no member named 'off'
    2878 |                                      meta->ptr.off + meta->ptr.var_off.value);
         |                                               ^
   drivers/net/ethernet/netronome/nfp/bpf/jit.c: In function 'mem_stx':
   drivers/net/ethernet/netronome/nfp/bpf/jit.c:2989:47: error: 'struct bpf_reg_state' has no member named 'off'
    2989 |                                      meta->ptr.off + meta->ptr.var_off.value);
         |                                               ^
   drivers/net/ethernet/netronome/nfp/bpf/jit.c: In function 'cross_mem_access':
   drivers/net/ethernet/netronome/nfp/bpf/jit.c:4156:65: error: 'struct bpf_reg_state' has no member named 'off'
    4156 |         head_ld_off = head_ld_meta->insn.off + head_ld_meta->ptr.off;
         |                                                                 ^
   drivers/net/ethernet/netronome/nfp/bpf/jit.c:4157:65: error: 'struct bpf_reg_state' has no member named 'off'
    4157 |         head_st_off = head_st_meta->insn.off + head_st_meta->ptr.off;
         |                                                                 ^
   drivers/net/ethernet/netronome/nfp/bpf/jit.c:4158:45: error: 'struct bpf_reg_state' has no member named 'off'
    4158 |         ld_off = ld->off + head_ld_meta->ptr.off;
         |                                             ^
   drivers/net/ethernet/netronome/nfp/bpf/jit.c: In function 'nfp_bpf_opt_pkt_cache':
   drivers/net/ethernet/netronome/nfp/bpf/jit.c:4329:30: error: 'struct bpf_reg_state' has no member named 'off'
    4329 |                     meta->ptr.off == range_ptr_off) {
         |                              ^
   drivers/net/ethernet/netronome/nfp/bpf/jit.c:4364:48: error: 'struct bpf_reg_state' has no member named 'off'
    4364 |                 range_ptr_off = range_node->ptr.off;
         |                                                ^


vim +101 drivers/net/ethernet/netronome/nfp/bpf/verifier.c

8231f8444110c3 Jakub Kicinski 2017-12-14   82  
527db74b71ee5a Jakub Kicinski 2018-10-16   83  static bool nfp_bpf_map_update_value_ok(struct bpf_verifier_env *env)
527db74b71ee5a Jakub Kicinski 2018-10-16   84  {
527db74b71ee5a Jakub Kicinski 2018-10-16   85  	const struct bpf_reg_state *reg1 = cur_regs(env) + BPF_REG_1;
527db74b71ee5a Jakub Kicinski 2018-10-16   86  	const struct bpf_reg_state *reg3 = cur_regs(env) + BPF_REG_3;
527db74b71ee5a Jakub Kicinski 2018-10-16   87  	struct bpf_offloaded_map *offmap;
527db74b71ee5a Jakub Kicinski 2018-10-16   88  	struct bpf_func_state *state;
527db74b71ee5a Jakub Kicinski 2018-10-16   89  	struct nfp_bpf_map *nfp_map;
527db74b71ee5a Jakub Kicinski 2018-10-16   90  	int off, i;
527db74b71ee5a Jakub Kicinski 2018-10-16   91  
527db74b71ee5a Jakub Kicinski 2018-10-16   92  	state = env->cur_state->frame[reg3->frameno];
527db74b71ee5a Jakub Kicinski 2018-10-16   93  
527db74b71ee5a Jakub Kicinski 2018-10-16   94  	/* We need to record each time update happens with non-zero words,
527db74b71ee5a Jakub Kicinski 2018-10-16   95  	 * in case such word is used in atomic operations.
527db74b71ee5a Jakub Kicinski 2018-10-16   96  	 * Implicitly depend on nfp_bpf_stack_arg_ok(reg3) being run before.
527db74b71ee5a Jakub Kicinski 2018-10-16   97  	 */
527db74b71ee5a Jakub Kicinski 2018-10-16   98  
527db74b71ee5a Jakub Kicinski 2018-10-16   99  	offmap = map_to_offmap(reg1->map_ptr);
527db74b71ee5a Jakub Kicinski 2018-10-16  100  	nfp_map = offmap->dev_priv;
527db74b71ee5a Jakub Kicinski 2018-10-16 @101  	off = reg3->off + reg3->var_off.value;
527db74b71ee5a Jakub Kicinski 2018-10-16  102  
527db74b71ee5a Jakub Kicinski 2018-10-16  103  	for (i = 0; i < offmap->map.value_size; i++) {
527db74b71ee5a Jakub Kicinski 2018-10-16  104  		struct bpf_stack_state *stack_entry;
527db74b71ee5a Jakub Kicinski 2018-10-16  105  		unsigned int soff;
527db74b71ee5a Jakub Kicinski 2018-10-16  106  
527db74b71ee5a Jakub Kicinski 2018-10-16  107  		soff = -(off + i) - 1;
527db74b71ee5a Jakub Kicinski 2018-10-16  108  		stack_entry = &state->stack[soff / BPF_REG_SIZE];
527db74b71ee5a Jakub Kicinski 2018-10-16  109  		if (stack_entry->slot_type[soff % BPF_REG_SIZE] == STACK_ZERO)
527db74b71ee5a Jakub Kicinski 2018-10-16  110  			continue;
527db74b71ee5a Jakub Kicinski 2018-10-16  111  
527db74b71ee5a Jakub Kicinski 2018-10-16  112  		if (nfp_map->use_map[i / 4].type == NFP_MAP_USE_ATOMIC_CNT) {
527db74b71ee5a Jakub Kicinski 2018-10-16  113  			pr_vlog(env, "value at offset %d/%d may be non-zero, bpf_map_update_elem() is required to initialize atomic counters to zero to avoid offload endian issues\n",
527db74b71ee5a Jakub Kicinski 2018-10-16  114  				i, soff);
527db74b71ee5a Jakub Kicinski 2018-10-16  115  			return false;
527db74b71ee5a Jakub Kicinski 2018-10-16  116  		}
527db74b71ee5a Jakub Kicinski 2018-10-16  117  		nfp_map->use_map[i / 4].non_zero_update = 1;
527db74b71ee5a Jakub Kicinski 2018-10-16  118  	}
527db74b71ee5a Jakub Kicinski 2018-10-16  119  
527db74b71ee5a Jakub Kicinski 2018-10-16  120  	return true;
527db74b71ee5a Jakub Kicinski 2018-10-16  121  }
527db74b71ee5a Jakub Kicinski 2018-10-16  122  
2f46e0c1273512 Jakub Kicinski 2018-03-28  123  static int
2f46e0c1273512 Jakub Kicinski 2018-03-28  124  nfp_bpf_stack_arg_ok(const char *fname, struct bpf_verifier_env *env,
2f46e0c1273512 Jakub Kicinski 2018-03-28  125  		     const struct bpf_reg_state *reg,
2f46e0c1273512 Jakub Kicinski 2018-03-28  126  		     struct nfp_bpf_reg_state *old_arg)
2f46e0c1273512 Jakub Kicinski 2018-03-28  127  {
2f46e0c1273512 Jakub Kicinski 2018-03-28  128  	s64 off, old_off;
2f46e0c1273512 Jakub Kicinski 2018-03-28  129  
2f46e0c1273512 Jakub Kicinski 2018-03-28  130  	if (reg->type != PTR_TO_STACK) {
2f46e0c1273512 Jakub Kicinski 2018-03-28  131  		pr_vlog(env, "%s: unsupported ptr type %d\n",
2f46e0c1273512 Jakub Kicinski 2018-03-28  132  			fname, reg->type);
2f46e0c1273512 Jakub Kicinski 2018-03-28  133  		return false;
2f46e0c1273512 Jakub Kicinski 2018-03-28  134  	}
2f46e0c1273512 Jakub Kicinski 2018-03-28  135  	if (!tnum_is_const(reg->var_off)) {
2f46e0c1273512 Jakub Kicinski 2018-03-28  136  		pr_vlog(env, "%s: variable pointer\n", fname);
2f46e0c1273512 Jakub Kicinski 2018-03-28  137  		return false;
2f46e0c1273512 Jakub Kicinski 2018-03-28  138  	}
2f46e0c1273512 Jakub Kicinski 2018-03-28  139  
2f46e0c1273512 Jakub Kicinski 2018-03-28  140  	off = reg->var_off.value + reg->off;
2f46e0c1273512 Jakub Kicinski 2018-03-28  141  	if (-off % 4) {
2f46e0c1273512 Jakub Kicinski 2018-03-28  142  		pr_vlog(env, "%s: unaligned stack pointer %lld\n", fname, -off);
2f46e0c1273512 Jakub Kicinski 2018-03-28  143  		return false;
2f46e0c1273512 Jakub Kicinski 2018-03-28  144  	}
2f46e0c1273512 Jakub Kicinski 2018-03-28  145  
2f46e0c1273512 Jakub Kicinski 2018-03-28  146  	/* Rest of the checks is only if we re-parse the same insn */
2f46e0c1273512 Jakub Kicinski 2018-03-28  147  	if (!old_arg)
2f46e0c1273512 Jakub Kicinski 2018-03-28  148  		return true;
2f46e0c1273512 Jakub Kicinski 2018-03-28  149  
2f46e0c1273512 Jakub Kicinski 2018-03-28 @150  	old_off = old_arg->reg.var_off.value + old_arg->reg.off;
2f46e0c1273512 Jakub Kicinski 2018-03-28  151  	old_arg->var_off |= off != old_off;
2f46e0c1273512 Jakub Kicinski 2018-03-28  152  
2f46e0c1273512 Jakub Kicinski 2018-03-28  153  	return true;
2f46e0c1273512 Jakub Kicinski 2018-03-28  154  }
2f46e0c1273512 Jakub Kicinski 2018-03-28  155  

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

  parent reply	other threads:[~2026-02-12  3:06 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-11 22:31 [PATCH bpf-next 0/3] bpf: consolidate pointer offset tracking in var_off Eduard Zingerman
2026-02-11 22:31 ` [PATCH bpf-next 1/3] bpf: split check_reg_sane_offset() in two parts Eduard Zingerman
2026-02-11 22:31 ` [PATCH bpf-next 2/3] bpf: use reg->var_off instead of reg->off for pointers Eduard Zingerman
2026-02-12  2:23   ` Alexei Starovoitov
2026-02-12  5:06     ` Eduard Zingerman
2026-02-11 22:31 ` [PATCH bpf-next 3/3] bpf: rename bpf_reg_state->off to bpf_reg_state->delta Eduard Zingerman
2026-02-11 23:08   ` bot+bpf-ci
2026-02-11 23:14     ` Eduard Zingerman
2026-02-12  3:06   ` kernel test robot [this message]
2026-02-12  8:15   ` kernel test robot
2026-02-12  8:15   ` kernel test robot

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=202602120439.lmbFn0nF-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eddyz87@gmail.com \
    --cc=kernel-team@fb.com \
    --cc=martin.lau@linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=yonghong.song@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox