All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 10833/12102] net/ipv6/mcast.c:549:5: sparse: int extern [addressable] [signed] [toplevel] ip6_mc_msfget( ... )
@ 2020-05-27  1:31 kbuild test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kbuild test robot @ 2020-05-27  1:31 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 8702 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   c11d28ab4a691736e30b49813fb801847bd44e83
commit: 931ca7ab7fe804d77bc6952f1512950c0d870f26 [10833/12102] ip*_mc_gsfget(): lift copyout of struct group_filter into callers
:::::: branch date: 2 days ago
:::::: commit date: 4 days ago
config: c6x-randconfig-s001-20200524 (attached as .config)
compiler: c6x-elf-gcc (GCC) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-240-gf0fe1cd9-dirty
        git checkout 931ca7ab7fe804d77bc6952f1512950c0d870f26
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=c6x CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

   net/ipv6/mcast.c:606:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void [noderef] <asn:1> *to @@    got struct __kvoid [noderef] <asn:1> *to @@
   net/ipv6/mcast.c:606:34: sparse:    expected void [noderef] <asn:1> *to
   net/ipv6/mcast.c:606:34: sparse:    got struct __kernel_sockaddr_storage *p
   net/ipv6/mcast.c:549:5: sparse: sparse: symbol 'ip6_mc_msfget' redeclared with different type (incompatible argument 3 (different address spaces)):
>> net/ipv6/mcast.c:549:5: sparse:    int extern [addressable] [signed] [toplevel] ip6_mc_msfget( ... )
   include/net/ipv6.h:1140:5: sparse: note: previously declared as:
>> include/net/ipv6.h:1140:5: sparse:    int extern [addressable] [signed] [toplevel] ip6_mc_msfget( ... )
   net/ipv6/mcast.c:259:25: sparse: sparse: context imbalance in 'ip6_mc_find_dev_rcu' - different lock contexts for basic block
   net/ipv6/mcast.c:453:9: sparse: sparse: context imbalance in 'ip6_mc_source' - unexpected unlock
   net/ipv6/mcast.c:542:9: sparse: sparse: context imbalance in 'ip6_mc_msfilter' - unexpected unlock
   net/ipv6/mcast.c:589:21: sparse: sparse: context imbalance in 'ip6_mc_msfget' - unexpected unlock
   net/ipv6/mcast.c:2700:25: sparse: sparse: context imbalance in 'igmp6_mc_get_next' - unexpected unlock
   net/ipv6/mcast.c:2722:9: sparse: sparse: context imbalance in 'igmp6_mc_get_idx' - wrong count at exit
   net/ipv6/mcast.c:2749:9: sparse: sparse: context imbalance in 'igmp6_mc_seq_stop' - unexpected unlock
   net/ipv6/mcast.c:2821:31: sparse: sparse: context imbalance in 'igmp6_mcf_get_next' - unexpected unlock
   net/ipv6/mcast.c:2853:9: sparse: sparse: context imbalance in 'igmp6_mcf_get_idx' - wrong count at exit
   net/ipv6/mcast.c:2870:9: sparse: sparse: context imbalance in 'igmp6_mcf_seq_next' - wrong count at exit
   net/ipv6/mcast.c:2883:17: sparse: sparse: context imbalance in 'igmp6_mcf_seq_stop' - unexpected unlock

# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=931ca7ab7fe804d77bc6952f1512950c0d870f26
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git remote update linux-next
git checkout 931ca7ab7fe804d77bc6952f1512950c0d870f26
vim +549 net/ipv6/mcast.c

^1da177e4c3f41 Linus Torvalds    2005-04-16  548  
^1da177e4c3f41 Linus Torvalds    2005-04-16 @549  int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf,
931ca7ab7fe804 Al Viro           2020-03-29  550  	struct sockaddr_storage *p)
^1da177e4c3f41 Linus Torvalds    2005-04-16  551  {
^1da177e4c3f41 Linus Torvalds    2005-04-16  552  	int err, i, count, copycount;
b71d1d426d263b Eric Dumazet      2011-04-22  553  	const struct in6_addr *group;
^1da177e4c3f41 Linus Torvalds    2005-04-16  554  	struct ipv6_mc_socklist *pmc;
^1da177e4c3f41 Linus Torvalds    2005-04-16  555  	struct inet6_dev *idev;
^1da177e4c3f41 Linus Torvalds    2005-04-16  556  	struct ipv6_pinfo *inet6 = inet6_sk(sk);
^1da177e4c3f41 Linus Torvalds    2005-04-16  557  	struct ip6_sf_socklist *psl;
3b1e0a655f8eba YOSHIFUJI Hideaki 2008-03-26  558  	struct net *net = sock_net(sk);
^1da177e4c3f41 Linus Torvalds    2005-04-16  559  
^1da177e4c3f41 Linus Torvalds    2005-04-16  560  	group = &((struct sockaddr_in6 *)&gsf->gf_group)->sin6_addr;
^1da177e4c3f41 Linus Torvalds    2005-04-16  561  
^1da177e4c3f41 Linus Torvalds    2005-04-16  562  	if (!ipv6_addr_is_multicast(group))
^1da177e4c3f41 Linus Torvalds    2005-04-16  563  		return -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  564  
96b52e61be1ad4 Eric Dumazet      2010-06-07  565  	rcu_read_lock();
96b52e61be1ad4 Eric Dumazet      2010-06-07  566  	idev = ip6_mc_find_dev_rcu(net, group, gsf->gf_interface);
^1da177e4c3f41 Linus Torvalds    2005-04-16  567  
96b52e61be1ad4 Eric Dumazet      2010-06-07  568  	if (!idev) {
96b52e61be1ad4 Eric Dumazet      2010-06-07  569  		rcu_read_unlock();
^1da177e4c3f41 Linus Torvalds    2005-04-16  570  		return -ENODEV;
96b52e61be1ad4 Eric Dumazet      2010-06-07  571  	}
^1da177e4c3f41 Linus Torvalds    2005-04-16  572  
^1da177e4c3f41 Linus Torvalds    2005-04-16  573  	err = -EADDRNOTAVAIL;
f7ed925c1b4d62 WANG Cong         2014-09-11  574  	/* changes to the ipv6_mc_list require the socket lock and
f7ed925c1b4d62 WANG Cong         2014-09-11  575  	 * rtnl lock. We have the socket lock and rcu read lock,
5ab4a6c81eb3db David L Stevens   2005-12-27  576  	 * so reading the list is safe.
5ab4a6c81eb3db David L Stevens   2005-12-27  577  	 */
^1da177e4c3f41 Linus Torvalds    2005-04-16  578  
456b61bca8ee32 Eric Dumazet      2010-11-23  579  	for_each_pmc_rcu(inet6, pmc) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  580  		if (pmc->ifindex != gsf->gf_interface)
^1da177e4c3f41 Linus Torvalds    2005-04-16  581  			continue;
^1da177e4c3f41 Linus Torvalds    2005-04-16  582  		if (ipv6_addr_equal(group, &pmc->addr))
^1da177e4c3f41 Linus Torvalds    2005-04-16  583  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  584  	}
^1da177e4c3f41 Linus Torvalds    2005-04-16  585  	if (!pmc)		/* must have a prior join */
^1da177e4c3f41 Linus Torvalds    2005-04-16  586  		goto done;
^1da177e4c3f41 Linus Torvalds    2005-04-16  587  	gsf->gf_fmode = pmc->sfmode;
^1da177e4c3f41 Linus Torvalds    2005-04-16  588  	psl = pmc->sflist;
^1da177e4c3f41 Linus Torvalds    2005-04-16  589  	count = psl ? psl->sl_count : 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  590  	read_unlock_bh(&idev->lock);
96b52e61be1ad4 Eric Dumazet      2010-06-07  591  	rcu_read_unlock();
^1da177e4c3f41 Linus Torvalds    2005-04-16  592  
^1da177e4c3f41 Linus Torvalds    2005-04-16  593  	copycount = count < gsf->gf_numsrc ? count : gsf->gf_numsrc;
^1da177e4c3f41 Linus Torvalds    2005-04-16  594  	gsf->gf_numsrc = count;
f7ed925c1b4d62 WANG Cong         2014-09-11  595  	/* changes to psl require the socket lock, and a write lock
f7ed925c1b4d62 WANG Cong         2014-09-11  596  	 * on pmc->sflock. We have the socket lock so reading here is safe.
5ab4a6c81eb3db David L Stevens   2005-12-27  597  	 */
931ca7ab7fe804 Al Viro           2020-03-29  598  	for (i = 0; i < copycount; i++, p++) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  599  		struct sockaddr_in6 *psin6;
^1da177e4c3f41 Linus Torvalds    2005-04-16  600  		struct sockaddr_storage ss;
^1da177e4c3f41 Linus Torvalds    2005-04-16  601  
^1da177e4c3f41 Linus Torvalds    2005-04-16  602  		psin6 = (struct sockaddr_in6 *)&ss;
^1da177e4c3f41 Linus Torvalds    2005-04-16  603  		memset(&ss, 0, sizeof(ss));
^1da177e4c3f41 Linus Torvalds    2005-04-16  604  		psin6->sin6_family = AF_INET6;
^1da177e4c3f41 Linus Torvalds    2005-04-16  605  		psin6->sin6_addr = psl->sl_addr[i];
931ca7ab7fe804 Al Viro           2020-03-29 @606  		if (copy_to_user(p, &ss, sizeof(ss)))
^1da177e4c3f41 Linus Torvalds    2005-04-16  607  			return -EFAULT;
^1da177e4c3f41 Linus Torvalds    2005-04-16  608  	}
^1da177e4c3f41 Linus Torvalds    2005-04-16  609  	return 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  610  done:
^1da177e4c3f41 Linus Torvalds    2005-04-16  611  	read_unlock_bh(&idev->lock);
96b52e61be1ad4 Eric Dumazet      2010-06-07  612  	rcu_read_unlock();
^1da177e4c3f41 Linus Torvalds    2005-04-16  613  	return err;
^1da177e4c3f41 Linus Torvalds    2005-04-16  614  }
^1da177e4c3f41 Linus Torvalds    2005-04-16  615  

:::::: The code at line 549 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 26679 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [linux-next:master 10833/12102] net/ipv6/mcast.c:549:5: sparse: int extern [addressable] [signed] [toplevel] ip6_mc_msfget( ... )
@ 2020-05-24 20:43 kbuild test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kbuild test robot @ 2020-05-24 20:43 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 8774 bytes --]

CC: kbuild-all(a)lists.01.org
TO: Al Viro <viro@zeniv.linux.org.uk>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   c11d28ab4a691736e30b49813fb801847bd44e83
commit: 931ca7ab7fe804d77bc6952f1512950c0d870f26 [10833/12102] ip*_mc_gsfget(): lift copyout of struct group_filter into callers
:::::: branch date: 2 days ago
:::::: commit date: 4 days ago
config: c6x-randconfig-s001-20200524 (attached as .config)
compiler: c6x-elf-gcc (GCC) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-240-gf0fe1cd9-dirty
        git checkout 931ca7ab7fe804d77bc6952f1512950c0d870f26
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=c6x CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

   net/ipv6/mcast.c:606:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void [noderef] <asn:1> *to @@    got struct __kvoid [noderef] <asn:1> *to @@
   net/ipv6/mcast.c:606:34: sparse:    expected void [noderef] <asn:1> *to
   net/ipv6/mcast.c:606:34: sparse:    got struct __kernel_sockaddr_storage *p
   net/ipv6/mcast.c:549:5: sparse: sparse: symbol 'ip6_mc_msfget' redeclared with different type (incompatible argument 3 (different address spaces)):
>> net/ipv6/mcast.c:549:5: sparse:    int extern [addressable] [signed] [toplevel] ip6_mc_msfget( ... )
   include/net/ipv6.h:1140:5: sparse: note: previously declared as:
>> include/net/ipv6.h:1140:5: sparse:    int extern [addressable] [signed] [toplevel] ip6_mc_msfget( ... )
   net/ipv6/mcast.c:259:25: sparse: sparse: context imbalance in 'ip6_mc_find_dev_rcu' - different lock contexts for basic block
   net/ipv6/mcast.c:453:9: sparse: sparse: context imbalance in 'ip6_mc_source' - unexpected unlock
   net/ipv6/mcast.c:542:9: sparse: sparse: context imbalance in 'ip6_mc_msfilter' - unexpected unlock
   net/ipv6/mcast.c:589:21: sparse: sparse: context imbalance in 'ip6_mc_msfget' - unexpected unlock
   net/ipv6/mcast.c:2700:25: sparse: sparse: context imbalance in 'igmp6_mc_get_next' - unexpected unlock
   net/ipv6/mcast.c:2722:9: sparse: sparse: context imbalance in 'igmp6_mc_get_idx' - wrong count at exit
   net/ipv6/mcast.c:2749:9: sparse: sparse: context imbalance in 'igmp6_mc_seq_stop' - unexpected unlock
   net/ipv6/mcast.c:2821:31: sparse: sparse: context imbalance in 'igmp6_mcf_get_next' - unexpected unlock
   net/ipv6/mcast.c:2853:9: sparse: sparse: context imbalance in 'igmp6_mcf_get_idx' - wrong count at exit
   net/ipv6/mcast.c:2870:9: sparse: sparse: context imbalance in 'igmp6_mcf_seq_next' - wrong count at exit
   net/ipv6/mcast.c:2883:17: sparse: sparse: context imbalance in 'igmp6_mcf_seq_stop' - unexpected unlock

# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=931ca7ab7fe804d77bc6952f1512950c0d870f26
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git remote update linux-next
git checkout 931ca7ab7fe804d77bc6952f1512950c0d870f26
vim +549 net/ipv6/mcast.c

^1da177e4c3f41 Linus Torvalds    2005-04-16  548  
^1da177e4c3f41 Linus Torvalds    2005-04-16 @549  int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf,
931ca7ab7fe804 Al Viro           2020-03-29  550  	struct sockaddr_storage *p)
^1da177e4c3f41 Linus Torvalds    2005-04-16  551  {
^1da177e4c3f41 Linus Torvalds    2005-04-16  552  	int err, i, count, copycount;
b71d1d426d263b Eric Dumazet      2011-04-22  553  	const struct in6_addr *group;
^1da177e4c3f41 Linus Torvalds    2005-04-16  554  	struct ipv6_mc_socklist *pmc;
^1da177e4c3f41 Linus Torvalds    2005-04-16  555  	struct inet6_dev *idev;
^1da177e4c3f41 Linus Torvalds    2005-04-16  556  	struct ipv6_pinfo *inet6 = inet6_sk(sk);
^1da177e4c3f41 Linus Torvalds    2005-04-16  557  	struct ip6_sf_socklist *psl;
3b1e0a655f8eba YOSHIFUJI Hideaki 2008-03-26  558  	struct net *net = sock_net(sk);
^1da177e4c3f41 Linus Torvalds    2005-04-16  559  
^1da177e4c3f41 Linus Torvalds    2005-04-16  560  	group = &((struct sockaddr_in6 *)&gsf->gf_group)->sin6_addr;
^1da177e4c3f41 Linus Torvalds    2005-04-16  561  
^1da177e4c3f41 Linus Torvalds    2005-04-16  562  	if (!ipv6_addr_is_multicast(group))
^1da177e4c3f41 Linus Torvalds    2005-04-16  563  		return -EINVAL;
^1da177e4c3f41 Linus Torvalds    2005-04-16  564  
96b52e61be1ad4 Eric Dumazet      2010-06-07  565  	rcu_read_lock();
96b52e61be1ad4 Eric Dumazet      2010-06-07  566  	idev = ip6_mc_find_dev_rcu(net, group, gsf->gf_interface);
^1da177e4c3f41 Linus Torvalds    2005-04-16  567  
96b52e61be1ad4 Eric Dumazet      2010-06-07  568  	if (!idev) {
96b52e61be1ad4 Eric Dumazet      2010-06-07  569  		rcu_read_unlock();
^1da177e4c3f41 Linus Torvalds    2005-04-16  570  		return -ENODEV;
96b52e61be1ad4 Eric Dumazet      2010-06-07  571  	}
^1da177e4c3f41 Linus Torvalds    2005-04-16  572  
^1da177e4c3f41 Linus Torvalds    2005-04-16  573  	err = -EADDRNOTAVAIL;
f7ed925c1b4d62 WANG Cong         2014-09-11  574  	/* changes to the ipv6_mc_list require the socket lock and
f7ed925c1b4d62 WANG Cong         2014-09-11  575  	 * rtnl lock. We have the socket lock and rcu read lock,
5ab4a6c81eb3db David L Stevens   2005-12-27  576  	 * so reading the list is safe.
5ab4a6c81eb3db David L Stevens   2005-12-27  577  	 */
^1da177e4c3f41 Linus Torvalds    2005-04-16  578  
456b61bca8ee32 Eric Dumazet      2010-11-23  579  	for_each_pmc_rcu(inet6, pmc) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  580  		if (pmc->ifindex != gsf->gf_interface)
^1da177e4c3f41 Linus Torvalds    2005-04-16  581  			continue;
^1da177e4c3f41 Linus Torvalds    2005-04-16  582  		if (ipv6_addr_equal(group, &pmc->addr))
^1da177e4c3f41 Linus Torvalds    2005-04-16  583  			break;
^1da177e4c3f41 Linus Torvalds    2005-04-16  584  	}
^1da177e4c3f41 Linus Torvalds    2005-04-16  585  	if (!pmc)		/* must have a prior join */
^1da177e4c3f41 Linus Torvalds    2005-04-16  586  		goto done;
^1da177e4c3f41 Linus Torvalds    2005-04-16  587  	gsf->gf_fmode = pmc->sfmode;
^1da177e4c3f41 Linus Torvalds    2005-04-16  588  	psl = pmc->sflist;
^1da177e4c3f41 Linus Torvalds    2005-04-16  589  	count = psl ? psl->sl_count : 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  590  	read_unlock_bh(&idev->lock);
96b52e61be1ad4 Eric Dumazet      2010-06-07  591  	rcu_read_unlock();
^1da177e4c3f41 Linus Torvalds    2005-04-16  592  
^1da177e4c3f41 Linus Torvalds    2005-04-16  593  	copycount = count < gsf->gf_numsrc ? count : gsf->gf_numsrc;
^1da177e4c3f41 Linus Torvalds    2005-04-16  594  	gsf->gf_numsrc = count;
f7ed925c1b4d62 WANG Cong         2014-09-11  595  	/* changes to psl require the socket lock, and a write lock
f7ed925c1b4d62 WANG Cong         2014-09-11  596  	 * on pmc->sflock. We have the socket lock so reading here is safe.
5ab4a6c81eb3db David L Stevens   2005-12-27  597  	 */
931ca7ab7fe804 Al Viro           2020-03-29  598  	for (i = 0; i < copycount; i++, p++) {
^1da177e4c3f41 Linus Torvalds    2005-04-16  599  		struct sockaddr_in6 *psin6;
^1da177e4c3f41 Linus Torvalds    2005-04-16  600  		struct sockaddr_storage ss;
^1da177e4c3f41 Linus Torvalds    2005-04-16  601  
^1da177e4c3f41 Linus Torvalds    2005-04-16  602  		psin6 = (struct sockaddr_in6 *)&ss;
^1da177e4c3f41 Linus Torvalds    2005-04-16  603  		memset(&ss, 0, sizeof(ss));
^1da177e4c3f41 Linus Torvalds    2005-04-16  604  		psin6->sin6_family = AF_INET6;
^1da177e4c3f41 Linus Torvalds    2005-04-16  605  		psin6->sin6_addr = psl->sl_addr[i];
931ca7ab7fe804 Al Viro           2020-03-29 @606  		if (copy_to_user(p, &ss, sizeof(ss)))
^1da177e4c3f41 Linus Torvalds    2005-04-16  607  			return -EFAULT;
^1da177e4c3f41 Linus Torvalds    2005-04-16  608  	}
^1da177e4c3f41 Linus Torvalds    2005-04-16  609  	return 0;
^1da177e4c3f41 Linus Torvalds    2005-04-16  610  done:
^1da177e4c3f41 Linus Torvalds    2005-04-16  611  	read_unlock_bh(&idev->lock);
96b52e61be1ad4 Eric Dumazet      2010-06-07  612  	rcu_read_unlock();
^1da177e4c3f41 Linus Torvalds    2005-04-16  613  	return err;
^1da177e4c3f41 Linus Torvalds    2005-04-16  614  }
^1da177e4c3f41 Linus Torvalds    2005-04-16  615  

:::::: The code at line 549 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 26679 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-05-27  1:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-27  1:31 [linux-next:master 10833/12102] net/ipv6/mcast.c:549:5: sparse: int extern [addressable] [signed] [toplevel] ip6_mc_msfget( ... ) kbuild test robot
  -- strict thread matches above, loose matches on Subject: below --
2020-05-24 20:43 kbuild test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.