Message ID | 20200516074515.13745-1-madhuparnabhowmik10@gmail.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net,v2] ipv6: Fix suspicious RCU usage warning in ip6mr | expand |
From: madhuparnabhowmik10@gmail.com Date: Sat, 16 May 2020 13:15:15 +0530 > From: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com> > > This patch fixes the following warning: > > ============================= > WARNING: suspicious RCU usage > 5.7.0-rc4-next-20200507-syzkaller #0 Not tainted > ----------------------------- > net/ipv6/ip6mr.c:124 RCU-list traversed in non-reader section!! > > ipmr_new_table() returns an existing table, but there is no table at > init. Therefore the condition: either holding rtnl or the list is empty > is used. > > Fixes: d1db275dd3f6e ("ipv6: ip6mr: support multiple tables") > Reported-by: kernel test robot <lkp@intel.com> > Suggested-by: Jakub Kicinski <kuba@kernel.org> > Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com> Applied and queued up for -stable, thanks.
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c index 65a54d74acc1..1e223e26f079 100644 --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c @@ -98,7 +98,8 @@ static void ipmr_expire_process(struct timer_list *t); #ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES #define ip6mr_for_each_table(mrt, net) \ list_for_each_entry_rcu(mrt, &net->ipv6.mr6_tables, list, \ - lockdep_rtnl_is_held()) + lockdep_rtnl_is_held() || \ + list_empty(&net->ipv6.mr6_tables)) static struct mr_table *ip6mr_mr_table_iter(struct net *net, struct mr_table *mrt)