diff options
author | Jeremy Kerr <jk@codeconstruct.com.au> | 2021-09-08 07:13:10 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-09-08 13:29:16 +0300 |
commit | 581edcd0c8a076eba2ec9e20db50921ee80f5cbc (patch) | |
tree | 008fe6a555e92ab5c6ea9a568f8e728517a458d9 | |
parent | d9ea761fdd197351890418acd462c51f241014a7 (diff) | |
download | linux-581edcd0c8a076eba2ec9e20db50921ee80f5cbc.tar.xz |
mctp: perform route destruction under RCU read lock
The kernel test robot reports:
[ 843.509974][ T345] =============================
[ 843.524220][ T345] WARNING: suspicious RCU usage
[ 843.538791][ T345] 5.14.0-rc2-00606-g889b7da23abf #1 Not tainted
[ 843.553617][ T345] -----------------------------
[ 843.567412][ T345] net/mctp/route.c:310 RCU-list traversed in non-reader section!!
- we're missing the rcu read lock acquire around the destruction path.
This change adds the acquire/release - the path is already atomic, and
we're using the _rcu list iterators.
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/mctp/route.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/mctp/route.c b/net/mctp/route.c index 5265525011ad..5ca186d53cb0 100644 --- a/net/mctp/route.c +++ b/net/mctp/route.c @@ -1083,8 +1083,10 @@ static void __net_exit mctp_routes_net_exit(struct net *net) { struct mctp_route *rt; + rcu_read_lock(); list_for_each_entry_rcu(rt, &net->mctp.routes, list) mctp_route_release(rt); + rcu_read_unlock(); } static struct pernet_operations mctp_net_ops = { |