Re: [PATCH net] igmp: convert struct ip_sf_list to RCU

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild-all,org.kernel.vger.netdev
Message-ID <[email protected]>
Hi Eric,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Eric-Dumazet/igmp-convert-struct-ip_sf_list-to-RCU/20260826-115913
base:   net/main
patch link:    https://lore.kernel.org/r/20260826115913.3381537-1-edumazet%40google.com
patch subject: [PATCH net] igmp: convert struct ip_sf_list to RCU
config: i386-randconfig-062-20260827 (https://download.01.org/0day-ci/archive/20260827/[email protected]/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260827/[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
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

sparse warnings: (new ones prefixed by >>)
   net/ipv4/igmp.c: note: in included file (through include/linux/igmp.h):
   include/uapi/linux/igmp.h:60:32: sparse: sparse: array of flexible structures
>> net/ipv4/igmp.c:3114:13: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct ip_sf_list *psf @@     got struct ip_sf_list [noderef] __rcu *sf_next @@
   net/ipv4/igmp.c:3114:13: sparse:     expected struct ip_sf_list *psf
   net/ipv4/igmp.c:3114:13: sparse:     got struct ip_sf_list [noderef] __rcu *sf_next
>> net/ipv4/igmp.c:3130:21: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct ip_sf_list *psf @@     got struct ip_sf_list [noderef] __rcu *sources @@
   net/ipv4/igmp.c:3130:21: sparse:     expected struct ip_sf_list *psf
   net/ipv4/igmp.c:3130:21: sparse:     got struct ip_sf_list [noderef] __rcu *sources
   net/ipv4/igmp.c:3098:29: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct ip_sf_list *psf @@     got struct ip_sf_list [noderef] __rcu *sources @@
   net/ipv4/igmp.c:3098:29: sparse:     expected struct ip_sf_list *psf
   net/ipv4/igmp.c:3098:29: sparse:     got struct ip_sf_list [noderef] __rcu *sources
   net/ipv4/igmp.c:3098:29: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct ip_sf_list *psf @@     got struct ip_sf_list [noderef] __rcu *sources @@
   net/ipv4/igmp.c:3098:29: sparse:     expected struct ip_sf_list *psf
   net/ipv4/igmp.c:3098:29: sparse:     got struct ip_sf_list [noderef] __rcu *sources

vim +3114 net/ipv4/igmp.c

^1da177e4c3f41 Linus Torvalds 2005-04-16  3109  
^1da177e4c3f41 Linus Torvalds 2005-04-16  3110  static struct ip_sf_list *igmp_mcf_get_next(struct seq_file *seq, struct ip_sf_list *psf)
^1da177e4c3f41 Linus Torvalds 2005-04-16  3111  {
^1da177e4c3f41 Linus Torvalds 2005-04-16  3112  	struct igmp_mcf_iter_state *state = igmp_mcf_seq_private(seq);
^1da177e4c3f41 Linus Torvalds 2005-04-16  3113  
^1da177e4c3f41 Linus Torvalds 2005-04-16 @3114  	psf = psf->sf_next;
^1da177e4c3f41 Linus Torvalds 2005-04-16  3115  	while (!psf) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  3116  		spin_unlock_bh(&state->im->lock);
^1da177e4c3f41 Linus Torvalds 2005-04-16  3117  		state->im = state->im->next;
^1da177e4c3f41 Linus Torvalds 2005-04-16  3118  		while (!state->im) {
6baff15037693c Eric Dumazet   2009-11-11  3119  			state->dev = next_net_device_rcu(state->dev);
^1da177e4c3f41 Linus Torvalds 2005-04-16  3120  			if (!state->dev) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  3121  				state->idev = NULL;
^1da177e4c3f41 Linus Torvalds 2005-04-16  3122  				goto out;
^1da177e4c3f41 Linus Torvalds 2005-04-16  3123  			}
6baff15037693c Eric Dumazet   2009-11-11  3124  			state->idev = __in_dev_get_rcu(state->dev);
^1da177e4c3f41 Linus Torvalds 2005-04-16  3125  			if (!state->idev)
^1da177e4c3f41 Linus Torvalds 2005-04-16  3126  				continue;
1d7138de878d1d Eric Dumazet   2010-11-12  3127  			state->im = rcu_dereference(state->idev->mc_list);
^1da177e4c3f41 Linus Torvalds 2005-04-16  3128  		}
^1da177e4c3f41 Linus Torvalds 2005-04-16  3129  		spin_lock_bh(&state->im->lock);
^1da177e4c3f41 Linus Torvalds 2005-04-16 @3130  		psf = state->im->sources;
^1da177e4c3f41 Linus Torvalds 2005-04-16  3131  	}
^1da177e4c3f41 Linus Torvalds 2005-04-16  3132  out:
^1da177e4c3f41 Linus Torvalds 2005-04-16  3133  	return psf;
^1da177e4c3f41 Linus Torvalds 2005-04-16  3134  }
^1da177e4c3f41 Linus Torvalds 2005-04-16  3135  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.