* [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.