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: um-i386_defconfig (https://download.01.org/0day-ci/archive/20231121/202311211344.cgnPKNbc-lkp@xxxxxxxxx/config) compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231121/202311211344.cgnPKNbc-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/202311211344.cgnPKNbc-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): net/core/filter.c:11812:13: warning: 'struct tcp_cookie_attributes' declared inside parameter list will not be visible outside of this definition or declaration struct tcp_cookie_attributes *attr, ^~~~~~~~~~~~~~~~~~~~~ net/core/filter.c: In function 'bpf_sk_assign_tcp_reqsk': >> net/core/filter.c:11821:25: error: dereferencing pointer to incomplete type 'struct tcp_cookie_attributes' if (attr__sz != sizeof(*attr)) ^~~~~ vim +11821 net/core/filter.c 11810 11811 __bpf_kfunc int bpf_sk_assign_tcp_reqsk(struct sk_buff *skb, struct sock *sk, 11812 struct tcp_cookie_attributes *attr, 11813 int attr__sz) 11814 { 11815 const struct request_sock_ops *ops; 11816 struct inet_request_sock *ireq; 11817 struct tcp_request_sock *treq; 11818 struct request_sock *req; 11819 __u16 min_mss; 11820 11821 if (attr__sz != sizeof(*attr)) 11822 return -EINVAL; 11823 11824 if (!sk) 11825 return -EINVAL; 11826 11827 if (!skb_at_tc_ingress(skb)) 11828 return -EINVAL; 11829 11830 if (dev_net(skb->dev) != sock_net(sk)) 11831 return -ENETUNREACH; 11832 11833 switch (skb->protocol) { 11834 case htons(ETH_P_IP): 11835 ops = &tcp_request_sock_ops; 11836 min_mss = 536; 11837 break; 11838 #if IS_BUILTIN(CONFIG_IPV6) 11839 case htons(ETH_P_IPV6): 11840 ops = &tcp6_request_sock_ops; 11841 min_mss = IPV6_MIN_MTU - 60; 11842 break; 11843 #endif 11844 default: 11845 return -EINVAL; 11846 } 11847 11848 if (sk->sk_type != SOCK_STREAM || sk->sk_state != TCP_LISTEN) 11849 return -EINVAL; 11850 11851 if (attr->tcp_opt.mss_clamp < min_mss) { 11852 __NET_INC_STATS(sock_net(sk), LINUX_MIB_SYNCOOKIESFAILED); 11853 return -EINVAL; 11854 } 11855 11856 if (attr->tcp_opt.wscale_ok && 11857 attr->tcp_opt.snd_wscale > TCP_MAX_WSCALE) { 11858 __NET_INC_STATS(sock_net(sk), LINUX_MIB_SYNCOOKIESFAILED); 11859 return -EINVAL; 11860 } 11861 11862 if (sk_is_mptcp(sk)) 11863 req = mptcp_subflow_reqsk_alloc(ops, sk, false); 11864 else 11865 req = inet_reqsk_alloc(ops, sk, false); 11866 11867 if (!req) 11868 return -ENOMEM; 11869 11870 ireq = inet_rsk(req); 11871 treq = tcp_rsk(req); 11872 11873 req->syncookie = 1; 11874 req->rsk_listener = sk; 11875 req->mss = attr->tcp_opt.mss_clamp; 11876 11877 ireq->snd_wscale = attr->tcp_opt.snd_wscale; 11878 ireq->wscale_ok = attr->tcp_opt.wscale_ok; 11879 ireq->tstamp_ok = attr->tcp_opt.tstamp_ok; 11880 ireq->sack_ok = attr->tcp_opt.sack_ok; 11881 ireq->ecn_ok = attr->ecn_ok; 11882 11883 treq->req_usec_ts = attr->usec_ts_ok; 11884 11885 skb_orphan(skb); 11886 skb->sk = req_to_sk(req); 11887 skb->destructor = sock_pfree; 11888 11889 return 0; 11890 } 11891 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki