From: kernel test robot <lkp@intel.com>
To: Stefan Wiehler <stefan.wiehler@nokia.com>,
"David S . Miller" <davem@davemloft.net>,
David Ahern <dsahern@kernel.org>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Stefan Wiehler <stefan.wiehler@nokia.com>
Subject: Re: [PATCH net v3 3/4] ip6mr: Lock RCU before ip6mr_get_table() call in ip6mr_compat_ioctl()
Date: Sat, 12 Oct 2024 01:11:42 +0800 [thread overview]
Message-ID: <202410120109.QyXpPs23-lkp@intel.com> (raw)
In-Reply-To: <20241010090741.1980100-7-stefan.wiehler@nokia.com>
Hi Stefan,
kernel test robot noticed the following build warnings:
[auto build test WARNING on net/main]
url: https://github.com/intel-lab-lkp/linux/commits/Stefan-Wiehler/ip6mr-Lock-RCU-before-ip6mr_get_table-call-in-ip6mr_ioctl/20241010-171634
base: net/main
patch link: https://lore.kernel.org/r/20241010090741.1980100-7-stefan.wiehler%40nokia.com
patch subject: [PATCH net v3 3/4] ip6mr: Lock RCU before ip6mr_get_table() call in ip6mr_compat_ioctl()
config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20241012/202410120109.QyXpPs23-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241012/202410120109.QyXpPs23-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410120109.QyXpPs23-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> net/ipv6/ip6mr.c:1970:18: warning: variable 'mrt' is uninitialized when used here [-Wuninitialized]
1970 | if (vr.mifi >= mrt->maxvif)
| ^~~
net/ipv6/ip6mr.c:1963:22: note: initialize the variable 'mrt' to silence this warning
1963 | struct mr_table *mrt;
| ^
| = NULL
1 warning generated.
vim +/mrt +1970 net/ipv6/ip6mr.c
e2d57766e6744f David S. Miller 2011-02-03 1955
e2d57766e6744f David S. Miller 2011-02-03 1956 int ip6mr_compat_ioctl(struct sock *sk, unsigned int cmd, void __user *arg)
e2d57766e6744f David S. Miller 2011-02-03 1957 {
e2d57766e6744f David S. Miller 2011-02-03 1958 struct compat_sioc_sg_req6 sr;
e2d57766e6744f David S. Miller 2011-02-03 1959 struct compat_sioc_mif_req6 vr;
6853f21f764b04 Yuval Mintz 2018-02-28 1960 struct vif_device *vif;
e2d57766e6744f David S. Miller 2011-02-03 1961 struct mfc6_cache *c;
e2d57766e6744f David S. Miller 2011-02-03 1962 struct net *net = sock_net(sk);
b70432f7319eb7 Yuval Mintz 2018-02-28 1963 struct mr_table *mrt;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1964 int err;
e2d57766e6744f David S. Miller 2011-02-03 1965
e2d57766e6744f David S. Miller 2011-02-03 1966 switch (cmd) {
e2d57766e6744f David S. Miller 2011-02-03 1967 case SIOCGETMIFCNT_IN6:
e2d57766e6744f David S. Miller 2011-02-03 1968 if (copy_from_user(&vr, arg, sizeof(vr)))
e2d57766e6744f David S. Miller 2011-02-03 1969 return -EFAULT;
e2d57766e6744f David S. Miller 2011-02-03 @1970 if (vr.mifi >= mrt->maxvif)
e2d57766e6744f David S. Miller 2011-02-03 1971 return -EINVAL;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1972 break;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1973 case SIOCGETSGCNT_IN6:
9135a3aca0c10d Stefan Wiehler 2024-10-10 1974 if (copy_from_user(&sr, arg, sizeof(sr)))
9135a3aca0c10d Stefan Wiehler 2024-10-10 1975 return -EFAULT;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1976 break;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1977 default:
9135a3aca0c10d Stefan Wiehler 2024-10-10 1978 return -ENOIOCTLCMD;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1979 }
9135a3aca0c10d Stefan Wiehler 2024-10-10 1980
9135a3aca0c10d Stefan Wiehler 2024-10-10 1981
638cf4a24a09d1 Eric Dumazet 2022-06-23 1982 rcu_read_lock();
9135a3aca0c10d Stefan Wiehler 2024-10-10 1983 mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT);
9135a3aca0c10d Stefan Wiehler 2024-10-10 1984 if (!mrt) {
9135a3aca0c10d Stefan Wiehler 2024-10-10 1985 err = -ENOENT;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1986 goto out;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1987 }
9135a3aca0c10d Stefan Wiehler 2024-10-10 1988
9135a3aca0c10d Stefan Wiehler 2024-10-10 1989 switch (cmd) {
9135a3aca0c10d Stefan Wiehler 2024-10-10 1990 case SIOCGETMIFCNT_IN6:
9135a3aca0c10d Stefan Wiehler 2024-10-10 1991 if (vr.mifi >= mrt->maxvif) {
9135a3aca0c10d Stefan Wiehler 2024-10-10 1992 err = -EINVAL;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1993 goto out;
9135a3aca0c10d Stefan Wiehler 2024-10-10 1994 }
9135a3aca0c10d Stefan Wiehler 2024-10-10 1995 vr.mifi = array_index_nospec(vr.mifi, mrt->maxvif);
b70432f7319eb7 Yuval Mintz 2018-02-28 1996 vif = &mrt->vif_table[vr.mifi];
b70432f7319eb7 Yuval Mintz 2018-02-28 1997 if (VIF_EXISTS(mrt, vr.mifi)) {
638cf4a24a09d1 Eric Dumazet 2022-06-23 1998 vr.icount = READ_ONCE(vif->pkt_in);
638cf4a24a09d1 Eric Dumazet 2022-06-23 1999 vr.ocount = READ_ONCE(vif->pkt_out);
638cf4a24a09d1 Eric Dumazet 2022-06-23 2000 vr.ibytes = READ_ONCE(vif->bytes_in);
638cf4a24a09d1 Eric Dumazet 2022-06-23 2001 vr.obytes = READ_ONCE(vif->bytes_out);
638cf4a24a09d1 Eric Dumazet 2022-06-23 2002 rcu_read_unlock();
e2d57766e6744f David S. Miller 2011-02-03 2003
e2d57766e6744f David S. Miller 2011-02-03 2004 if (copy_to_user(arg, &vr, sizeof(vr)))
e2d57766e6744f David S. Miller 2011-02-03 2005 return -EFAULT;
e2d57766e6744f David S. Miller 2011-02-03 2006 return 0;
e2d57766e6744f David S. Miller 2011-02-03 2007 }
638cf4a24a09d1 Eric Dumazet 2022-06-23 2008 rcu_read_unlock();
9135a3aca0c10d Stefan Wiehler 2024-10-10 2009 err = -EADDRNOTAVAIL;
9135a3aca0c10d Stefan Wiehler 2024-10-10 2010 goto out;
e2d57766e6744f David S. Miller 2011-02-03 2011 case SIOCGETSGCNT_IN6:
e2d57766e6744f David S. Miller 2011-02-03 2012 c = ip6mr_cache_find(mrt, &sr.src.sin6_addr, &sr.grp.sin6_addr);
e2d57766e6744f David S. Miller 2011-02-03 2013 if (c) {
494fff56379c4a Yuval Mintz 2018-02-28 2014 sr.pktcnt = c->_c.mfc_un.res.pkt;
494fff56379c4a Yuval Mintz 2018-02-28 2015 sr.bytecnt = c->_c.mfc_un.res.bytes;
494fff56379c4a Yuval Mintz 2018-02-28 2016 sr.wrong_if = c->_c.mfc_un.res.wrong_if;
87c418bf1323d5 Yuval Mintz 2018-02-28 2017 rcu_read_unlock();
e2d57766e6744f David S. Miller 2011-02-03 2018
e2d57766e6744f David S. Miller 2011-02-03 2019 if (copy_to_user(arg, &sr, sizeof(sr)))
e2d57766e6744f David S. Miller 2011-02-03 2020 return -EFAULT;
e2d57766e6744f David S. Miller 2011-02-03 2021 return 0;
e2d57766e6744f David S. Miller 2011-02-03 2022 }
9135a3aca0c10d Stefan Wiehler 2024-10-10 2023 err = -EADDRNOTAVAIL;
9135a3aca0c10d Stefan Wiehler 2024-10-10 2024 goto out;
e2d57766e6744f David S. Miller 2011-02-03 2025 }
9135a3aca0c10d Stefan Wiehler 2024-10-10 2026
9135a3aca0c10d Stefan Wiehler 2024-10-10 2027 out:
9135a3aca0c10d Stefan Wiehler 2024-10-10 2028 rcu_read_unlock();
9135a3aca0c10d Stefan Wiehler 2024-10-10 2029 return err;
e2d57766e6744f David S. Miller 2011-02-03 2030 }
e2d57766e6744f David S. Miller 2011-02-03 2031 #endif
7bc570c8b4f75d YOSHIFUJI Hideaki 2008-04-03 2032
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2024-10-11 17:12 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-10 9:07 [PATCH net v3 1/4] ip6mr: Lock RCU before ip6mr_get_table() call in ip6mr_vif_seq_start() Stefan Wiehler
2024-10-10 9:07 ` [PATCH net v3 2/4] ip6mr: Lock RCU before ip6mr_get_table() call in ip6mr_ioctl() Stefan Wiehler
2024-10-10 9:07 ` [PATCH net v3 3/4] ip6mr: Lock RCU before ip6mr_get_table() call in ip6mr_compat_ioctl() Stefan Wiehler
2024-10-10 9:41 ` Simon Horman
2024-10-10 14:43 ` Stefan Wiehler
2024-10-11 10:16 ` Simon Horman
2024-10-14 15:05 ` Stefan Wiehler
2024-10-11 17:11 ` kernel test robot [this message]
2024-10-10 9:07 ` [PATCH net v3 4/4] ip6mr: Lock RCU before ip6mr_get_table() call in ip6mr_get_route() Stefan Wiehler
2024-10-10 9:33 ` Eric Dumazet
2024-10-10 9:44 ` [PATCH net v3 1/4] ip6mr: Lock RCU before ip6mr_get_table() call in ip6mr_vif_seq_start() Eric Dumazet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202410120109.QyXpPs23-lkp@intel.com \
--to=lkp@intel.com \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=netdev@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=pabeni@redhat.com \
--cc=stefan.wiehler@nokia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.