Hi Kuniyuki, 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/Kuniyuki-Iwashima/tcp-Clean-up-reverse-xmas-tree-in-cookie_v-46-_check/20231121-063036 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master patch link: https://lore.kernel.org/r/20231120222341.54776-11-kuniyu%40amazon.com patch subject: [PATCH v2 bpf-next 10/11] bpf: tcp: Support arbitrary SYN Cookie. config: arm-spear3xx_defconfig (https://download.01.org/0day-ci/archive/20231121/202311211310.E8pJEsnT-lkp@xxxxxxxxx/config) compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231121/202311211310.E8pJEsnT-lkp@xxxxxxxxx/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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202311211310.E8pJEsnT-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): In file included from net/core/sock.c:142: In file included from include/net/tcp.h:32: >> include/net/inet_hashtables.h:472:22: error: use of undeclared identifier 'sock_pfree' skb->destructor = sock_pfree; ^ 1 error generated. -- In file included from net/core/filter.c:39: In file included from include/linux/skmsg.h:13: In file included from include/net/tcp.h:32: >> include/net/inet_hashtables.h:472:22: error: use of undeclared identifier 'sock_pfree' skb->destructor = sock_pfree; ^ net/core/filter.c:11812:13: warning: declaration of 'struct tcp_cookie_attributes' will not be visible outside of this function [-Wvisibility] struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11821:24: error: invalid application of 'sizeof' to an incomplete type 'struct tcp_cookie_attributes' if (attr__sz != sizeof(*attr)) ^~~~~~~ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11851:10: error: incomplete definition of type 'struct tcp_cookie_attributes' if (attr->tcp_opt.mss_clamp < min_mss) { ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11856:10: error: incomplete definition of type 'struct tcp_cookie_attributes' if (attr->tcp_opt.wscale_ok && ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11857:10: error: incomplete definition of type 'struct tcp_cookie_attributes' attr->tcp_opt.snd_wscale > TCP_MAX_WSCALE) { ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11875:17: error: incomplete definition of type 'struct tcp_cookie_attributes' req->mss = attr->tcp_opt.mss_clamp; ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11877:25: error: incomplete definition of type 'struct tcp_cookie_attributes' ireq->snd_wscale = attr->tcp_opt.snd_wscale; ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11878:24: error: incomplete definition of type 'struct tcp_cookie_attributes' ireq->wscale_ok = attr->tcp_opt.wscale_ok; ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11879:24: error: incomplete definition of type 'struct tcp_cookie_attributes' ireq->tstamp_ok = attr->tcp_opt.tstamp_ok; ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11880:22: error: incomplete definition of type 'struct tcp_cookie_attributes' ireq->sack_ok = attr->tcp_opt.sack_ok; ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11881:21: error: incomplete definition of type 'struct tcp_cookie_attributes' ireq->ecn_ok = attr->ecn_ok; ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ net/core/filter.c:11883:26: error: incomplete definition of type 'struct tcp_cookie_attributes' treq->req_usec_ts = attr->usec_ts_ok; ~~~~^ net/core/filter.c:11812:13: note: forward declaration of 'struct tcp_cookie_attributes' struct tcp_cookie_attributes *attr, ^ >> net/core/filter.c:11887:20: error: use of undeclared identifier 'sock_pfree' skb->destructor = sock_pfree; ^ 1 warning and 13 errors generated. vim +/sock_pfree +472 include/net/inet_hashtables.h 451 452 static inline 453 struct sock *inet_steal_sock(struct net *net, struct sk_buff *skb, int doff, 454 const __be32 saddr, const __be16 sport, 455 const __be32 daddr, const __be16 dport, 456 bool *refcounted, inet_ehashfn_t *ehashfn) 457 { 458 struct sock *sk, *reuse_sk; 459 bool prefetched; 460 461 sk = skb_steal_sock(skb, refcounted, &prefetched); 462 if (!sk) 463 return NULL; 464 465 if (!prefetched) 466 return sk; 467 468 if (sk->sk_state == TCP_NEW_SYN_RECV) { 469 if (inet_reqsk(sk)->syncookie) { 470 *refcounted = false; 471 skb->sk = sk; > 472 skb->destructor = sock_pfree; 473 return inet_reqsk(sk)->rsk_listener; 474 } 475 return sk; 476 } else if (sk->sk_state == TCP_TIME_WAIT) { 477 return sk; 478 } 479 480 if (sk->sk_protocol == IPPROTO_TCP) { 481 if (sk->sk_state != TCP_LISTEN) 482 return sk; 483 } else if (sk->sk_protocol == IPPROTO_UDP) { 484 if (sk->sk_state != TCP_CLOSE) 485 return sk; 486 } else { 487 return sk; 488 } 489 490 reuse_sk = inet_lookup_reuseport(net, sk, skb, doff, 491 saddr, sport, daddr, ntohs(dport), 492 ehashfn); 493 if (!reuse_sk) 494 return sk; 495 496 /* We've chosen a new reuseport sock which is never refcounted. This 497 * implies that sk also isn't refcounted. 498 */ 499 WARN_ON_ONCE(*refcounted); 500 501 return reuse_sk; 502 } 503 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki