net/netfilter/nft_synproxy.c:51:40: sparse: sparse: cast to non-scalar

kernel test robot <[email protected]> Thu, 06 Aug 2026 13:56:46 +0800
Newsgroups dev.linux.lists.oe-kbuild-all,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   0d839570765118029aa8bf4a95444c6a11aacf85
commit: 36a3200575642846a96436d503d46544533bb943 netfilter: nft_synproxy: avoid possible data-race on update operation
date:   7 months ago
config: alpha-randconfig-r111-20260806 (https://download.01.org/0day-ci/archive/20260806/[email protected]/config)
compiler: alpha-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260806/[email protected]/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
| Fixes: 36a320057564 ("netfilter: nft_synproxy: avoid possible data-race on update operation")
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

sparse warnings: (new ones prefixed by >>)
>> net/netfilter/nft_synproxy.c:51:40: sparse: sparse: cast to non-scalar
>> net/netfilter/nft_synproxy.c:51:40: sparse: sparse: cast from non-scalar

vim +51 net/netfilter/nft_synproxy.c

    43	
    44	static void nft_synproxy_eval_v4(const struct nft_synproxy *priv,
    45					 struct nft_regs *regs,
    46					 const struct nft_pktinfo *pkt,
    47					 const struct tcphdr *tcp,
    48					 struct tcphdr *_tcph,
    49					 struct synproxy_options *opts)
    50	{
  > 51		struct nf_synproxy_info info = READ_ONCE(priv->info);
    52		struct net *net = nft_net(pkt);
    53		struct synproxy_net *snet = synproxy_pernet(net);
    54		struct sk_buff *skb = pkt->skb;
    55	
    56		if (tcp->syn) {
    57			/* Initial SYN from client */
    58			nft_synproxy_tcp_options(opts, tcp, snet, &info, priv);
    59			synproxy_send_client_synack(net, skb, tcp, opts);
    60			consume_skb(skb);
    61			regs->verdict.code = NF_STOLEN;
    62		} else if (tcp->ack) {
    63			/* ACK from client */
    64			if (synproxy_recv_client_ack(net, skb, tcp, opts,
    65						     ntohl(tcp->seq))) {
    66				consume_skb(skb);
    67				regs->verdict.code = NF_STOLEN;
    68			} else {
    69				regs->verdict.code = NF_DROP;
    70			}
    71		}
    72	}
    73	

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