Re: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt

kernel test robot
2025-02-20T08:52:48Z

Hi Jason,

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/Jason-Xing/bpf-support-TCP_RTO_MAX_MS-for-bpf_setsockopt/20250219-161637
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
patch link: https://lore.kernel.org/r/20250219081333.56378-2-kerneljasonxing%40gmail.com
patch subject: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
config: x86_64-buildonly-randconfig-002-20250220 (https://download.01.org/0day-ci/archive/20250220/202502201843.xA1qZbKX-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250220/202502201843.xA1qZbKX-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/202502201843.xA1qZbKX-lkp@intel.com/

All errors (new ones prefixed by >>):

net/core/filter.c: In function 'sol_tcp_sockopt':
>> net/core/filter.c:5385:14: error: 'TCP_RTO_MAX_MS' undeclared (first use in this function); did you mean 'TCP_RTO_MAX'?
5385 | case TCP_RTO_MAX_MS:
| ^~~~~~~~~~~~~~
| TCP_RTO_MAX
net/core/filter.c:5385:14: note: each undeclared identifier is reported only once for each function it appears in

vim +5385 net/core/filter.c

5365
5366 static int sol_tcp_sockopt(struct sock *sk, int optname,
5367 char *optval, int *optlen,
5368 bool getopt)
5369 {
5370 if (sk->sk_protocol != IPPROTO_TCP)
5371 return -EINVAL;
5372
5373 switch (optname) {
5374 case TCP_NODELAY:
5375 case TCP_MAXSEG:
5376 case TCP_KEEPIDLE:
5377 case TCP_KEEPINTVL:
5378 case TCP_KEEPCNT:
5379 case TCP_SYNCNT:
5380 case TCP_WINDOW_CLAMP:
5381 case TCP_THIN_LINEAR_TIMEOUTS:
5382 case TCP_USER_TIMEOUT:
5383 case TCP_NOTSENT_LOWAT:
5384 case TCP_SAVE_SYN:
> 5385 case TCP_RTO_MAX_MS:
5386 if (*optlen != sizeof(int))
5387 return -EINVAL;
5388 break;
5389 case TCP_CONGESTION:
5390 return sol_tcp_sockopt_congestion(sk, optval, optlen, getopt);
5391 case TCP_SAVED_SYN:
5392 if (*optlen < 1)
5393 return -EINVAL;
5394 break;
5395 case TCP_BPF_SOCK_OPS_CB_FLAGS:
5396 if (*optlen != sizeof(int))
5397 return -EINVAL;
5398 if (getopt) {
5399 struct tcp_sock *tp = tcp_sk(sk);
5400 int cb_flags = tp->bpf_sock_ops_cb_flags;
5401
5402 memcpy(optval, &cb_flags, *optlen);
5403 return 0;
5404 }
5405 return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
5406 default:
5407 if (getopt)
5408 return -EINVAL;
5409 return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
5410 }
5411
5412 if (getopt) {
5413 if (optname == TCP_SAVED_SYN) {
5414 struct tcp_sock *tp = tcp_sk(sk);
5415
5416 if (!tp->saved_syn ||
5417 *optlen > tcp_saved_syn_len(tp->saved_syn))
5418 return -EINVAL;
5419 memcpy(optval, tp->saved_syn->data, *optlen);
5420 /* It cannot free tp->saved_syn here because it
5421 * does not know if the user space still needs it.
5422 */
5423 return 0;
5424 }
5425
5426 return do_tcp_getsockopt(sk, SOL_TCP, optname,
5427 KERNEL_SOCKPTR(optval),
5428 KERNEL_SOCKPTR(optlen));
5429 }
5430
5431 return do_tcp_setsockopt(sk, SOL_TCP, optname,
5432 KERNEL_SOCKPTR(optval), *optlen);
5433 }
5434

--
0-DAY CI Kernel Test Service