Hi Pablo, kernel test robot noticed the following build warnings: [auto build test WARNING on netfilter-nf/main] [also build test WARNING on linus/master v6.11-rc2 next-20240808] [cannot apply to nf-next/master] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Pablo-Neira-Ayuso/netfilter-nf_tables-elements-with-timeout-less-than-HZ-10-never-expire/20240807-222806 base: https://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git main patch link: https://lore.kernel.org/r/20240807142357.90493-8-pablo%40netfilter.org patch subject: [PATCH nf-next 7/8] netfilter: nf_tables: add never expires marker to elements config: x86_64-randconfig-123-20240808 (https://download.01.org/0day-ci/archive/20240809/202408090046.7kJeFHf4-lkp@xxxxxxxxx/config) compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240809/202408090046.7kJeFHf4-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/202408090046.7kJeFHf4-lkp@xxxxxxxxx/ sparse warnings: (new ones prefixed by >>) net/netfilter/nf_tables_api.c:1905:25: sparse: sparse: cast between address spaces (__percpu -> __rcu) net/netfilter/nf_tables_api.c:1905:25: sparse: sparse: incompatible types in comparison expression (different address spaces): net/netfilter/nf_tables_api.c:1905:25: sparse: struct nft_stats [noderef] __rcu * net/netfilter/nf_tables_api.c:1905:25: sparse: struct nft_stats [noderef] __percpu * net/netfilter/nf_tables_api.c:2077:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected struct nft_stats [noderef] __percpu * @@ got void * @@ net/netfilter/nf_tables_api.c:2080:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected struct nft_stats [noderef] __percpu * @@ got void * @@ net/netfilter/nf_tables_api.c:2084:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected struct nft_stats [noderef] __percpu * @@ got void * @@ net/netfilter/nf_tables_api.c:2107:17: sparse: sparse: cast between address spaces (__percpu -> __rcu) net/netfilter/nf_tables_api.c:2107:17: sparse: sparse: incompatible types in comparison expression (different address spaces): net/netfilter/nf_tables_api.c:2107:17: sparse: struct nft_stats [noderef] __rcu * net/netfilter/nf_tables_api.c:2107:17: sparse: struct nft_stats [noderef] __percpu * net/netfilter/nf_tables_api.c:2107:17: sparse: sparse: incompatible types in comparison expression (different address spaces): net/netfilter/nf_tables_api.c:2107:17: sparse: struct nft_stats [noderef] __rcu * net/netfilter/nf_tables_api.c:2107:17: sparse: struct nft_stats [noderef] __percpu * net/netfilter/nf_tables_api.c:2150:21: sparse: sparse: cast between address spaces (__percpu -> __rcu) net/netfilter/nf_tables_api.c:2150:21: sparse: sparse: incompatible types in comparison expression (different address spaces): net/netfilter/nf_tables_api.c:2150:21: sparse: struct nft_stats [noderef] __rcu * net/netfilter/nf_tables_api.c:2150:21: sparse: struct nft_stats [noderef] __percpu * net/netfilter/nf_tables_api.c:2533:25: sparse: sparse: cast between address spaces (__percpu -> __rcu) net/netfilter/nf_tables_api.c:2533:25: sparse: sparse: incompatible types in comparison expression (different address spaces): net/netfilter/nf_tables_api.c:2533:25: sparse: struct nft_stats [noderef] __rcu * net/netfilter/nf_tables_api.c:2533:25: sparse: struct nft_stats [noderef] __percpu * net/netfilter/nf_tables_api.c:2740:23: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct nft_stats *stats @@ got struct nft_stats [noderef] __percpu * @@ net/netfilter/nf_tables_api.c:2752:38: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct nft_stats [noderef] __percpu *stats @@ got struct nft_stats *stats @@ net/netfilter/nf_tables_api.c:2798:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __percpu *__pdata @@ got struct nft_stats *stats @@ >> net/netfilter/nf_tables_api.c:5829:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [assigned] [usertype] msecs @@ got restricted __be64 @@ net/netfilter/nf_tables_api.c:5831:31: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [assigned] [usertype] msecs @@ got restricted __be64 @@ >> net/netfilter/nf_tables_api.c:5834:62: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected restricted __be64 [usertype] value @@ got unsigned long long [assigned] [usertype] msecs @@ net/netfilter/nf_tables_api.c: note: in included file (through include/linux/mmzone.h, include/linux/gfp.h, include/linux/umh.h, include/linux/kmod.h, ...): include/linux/page-flags.h:235:46: sparse: sparse: self-comparison always evaluates to false include/linux/page-flags.h:235:46: sparse: sparse: self-comparison always evaluates to false net/netfilter/nf_tables_api.c: note: in included file (through include/linux/rbtree.h, include/linux/mm_types.h, include/linux/mmzone.h, ...): include/linux/rcupdate.h:867:9: sparse: sparse: context imbalance in 'nft_netlink_dump_start_rcu' - unexpected unlock vim +5829 net/netfilter/nf_tables_api.c 5778 5779 static int nf_tables_fill_setelem(struct sk_buff *skb, 5780 const struct nft_set *set, 5781 const struct nft_elem_priv *elem_priv, 5782 bool reset) 5783 { 5784 const struct nft_set_ext *ext = nft_set_elem_ext(set, elem_priv); 5785 unsigned char *b = skb_tail_pointer(skb); 5786 struct nlattr *nest; 5787 5788 nest = nla_nest_start_noflag(skb, NFTA_LIST_ELEM); 5789 if (nest == NULL) 5790 goto nla_put_failure; 5791 5792 if (nft_set_ext_exists(ext, NFT_SET_EXT_KEY) && 5793 nft_data_dump(skb, NFTA_SET_ELEM_KEY, nft_set_ext_key(ext), 5794 NFT_DATA_VALUE, set->klen) < 0) 5795 goto nla_put_failure; 5796 5797 if (nft_set_ext_exists(ext, NFT_SET_EXT_KEY_END) && 5798 nft_data_dump(skb, NFTA_SET_ELEM_KEY_END, nft_set_ext_key_end(ext), 5799 NFT_DATA_VALUE, set->klen) < 0) 5800 goto nla_put_failure; 5801 5802 if (nft_set_ext_exists(ext, NFT_SET_EXT_DATA) && 5803 nft_data_dump(skb, NFTA_SET_ELEM_DATA, nft_set_ext_data(ext), 5804 nft_set_datatype(set), set->dlen) < 0) 5805 goto nla_put_failure; 5806 5807 if (nft_set_ext_exists(ext, NFT_SET_EXT_EXPRESSIONS) && 5808 nft_set_elem_expr_dump(skb, set, ext, reset)) 5809 goto nla_put_failure; 5810 5811 if (nft_set_ext_exists(ext, NFT_SET_EXT_OBJREF) && 5812 nla_put_string(skb, NFTA_SET_ELEM_OBJREF, 5813 (*nft_set_ext_obj(ext))->key.name) < 0) 5814 goto nla_put_failure; 5815 5816 if (nft_set_ext_exists(ext, NFT_SET_EXT_FLAGS) && 5817 nla_put_be32(skb, NFTA_SET_ELEM_FLAGS, 5818 htonl(*nft_set_ext_flags(ext)))) 5819 goto nla_put_failure; 5820 5821 if (nft_set_ext_exists(ext, NFT_SET_EXT_TIMEOUT)) { 5822 u64 timeout = nft_set_ext_timeout(ext)->timeout, msecs = 0; 5823 u64 set_timeout = READ_ONCE(set->timeout); 5824 5825 if (set_timeout > 0) { 5826 if (timeout == NFT_NEVER_EXPIRES) 5827 msecs = NFT_NEVER_EXPIRES; 5828 else if (timeout != set_timeout) > 5829 msecs = nf_jiffies64_to_msecs(timeout); 5830 } else if (timeout && timeout != NFT_NEVER_EXPIRES) 5831 msecs = nf_jiffies64_to_msecs(timeout); 5832 5833 if (msecs && > 5834 nla_put_be64(skb, NFTA_SET_ELEM_TIMEOUT, msecs, 5835 NFTA_SET_ELEM_PAD)) 5836 goto nla_put_failure; 5837 5838 if (timeout != NFT_NEVER_EXPIRES) { 5839 u64 expires, now = get_jiffies_64(); 5840 5841 expires = READ_ONCE(nft_set_ext_timeout(ext)->expiration); 5842 if (time_before64(now, expires)) 5843 expires -= now; 5844 else 5845 expires = 0; 5846 5847 if (nla_put_be64(skb, NFTA_SET_ELEM_EXPIRATION, 5848 nf_jiffies64_to_msecs(expires), 5849 NFTA_SET_ELEM_PAD)) 5850 goto nla_put_failure; 5851 } 5852 } 5853 5854 if (nft_set_ext_exists(ext, NFT_SET_EXT_USERDATA)) { 5855 struct nft_userdata *udata; 5856 5857 udata = nft_set_ext_userdata(ext); 5858 if (nla_put(skb, NFTA_SET_ELEM_USERDATA, 5859 udata->len + 1, udata->data)) 5860 goto nla_put_failure; 5861 } 5862 5863 nla_nest_end(skb, nest); 5864 return 0; 5865 5866 nla_put_failure: 5867 nlmsg_trim(skb, b); 5868 return -EMSGSIZE; 5869 } 5870 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki