caifdevs->list is traversed using list_for_each_entry_rcu()
outside an RCU read-side critical section but under the
protection of rtnl_mutex. Hence, add the corresponding lockdep
expression to silence the following false-positive warning:
[ 10.868467] =============================
[ 10.869082] WARNING: suspicious RCU usage
[ 10.869817] 5.6.0-rc1-00177-g06ec0a154aae4 #1 Not tainted
[ 10.870804] -----------------------------
[ 10.871557] net/caif/caif_dev.c:115 RCU-list traversed in non-reader section!!
Reported-by: kernel test robot <[email protected]>
Signed-off-by: Amol Grover <[email protected]>
---
net/caif/caif_dev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c
index 03c7cdd8e4cb..195d2d67be8a 100644
--- a/net/caif/caif_dev.c
+++ b/net/caif/caif_dev.c
@@ -112,7 +112,8 @@ static struct caif_device_entry *caif_get(struct net_device *dev)
caif_device_list(dev_net(dev));
struct caif_device_entry *caifd;
- list_for_each_entry_rcu(caifd, &caifdevs->list, list) {
+ list_for_each_entry_rcu(caifd, &caifdevs->list, list,
+ lockdep_rtnl_is_held()) {
if (caifd->netdev == dev)
return caifd;
}
--
2.25.1
From: Amol Grover <[email protected]>
Date: Thu, 12 Mar 2020 11:04:20 +0530
> caifdevs->list is traversed using list_for_each_entry_rcu()
> outside an RCU read-side critical section but under the
> protection of rtnl_mutex. Hence, add the corresponding lockdep
> expression to silence the following false-positive warning:
>
> [ 10.868467] =============================
> [ 10.869082] WARNING: suspicious RCU usage
> [ 10.869817] 5.6.0-rc1-00177-g06ec0a154aae4 #1 Not tainted
> [ 10.870804] -----------------------------
> [ 10.871557] net/caif/caif_dev.c:115 RCU-list traversed in non-reader section!!
>
> Reported-by: kernel test robot <[email protected]>
> Signed-off-by: Amol Grover <[email protected]>
Applied, thank you.