Commit 28b380e2 authored by Amol Grover's avatar Amol Grover Committed by David S. Miller

ip6mr: Fix RCU list debugging warning

ip6mr_for_each_table() macro uses list_for_each_entry_rcu()
for traversing 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 warnings:

[    4.319479] =============================
[    4.319480] WARNING: suspicious RCU usage
[    4.319482] 5.5.4-stable #17 Tainted: G            E
[    4.319483] -----------------------------
[    4.319485] net/ipv6/ip6mr.c:1243 RCU-list traversed in non-reader section!!

[    4.456831] =============================
[    4.456832] WARNING: suspicious RCU usage
[    4.456834] 5.5.4-stable #17 Tainted: G            E
[    4.456835] -----------------------------
[    4.456837] net/ipv6/ip6mr.c:1582 RCU-list traversed in non-reader section!!
Signed-off-by: default avatarAmol Grover <frextrite@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 57a10d8c
...@@ -97,7 +97,8 @@ static void ipmr_expire_process(struct timer_list *t); ...@@ -97,7 +97,8 @@ static void ipmr_expire_process(struct timer_list *t);
#ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES
#define ip6mr_for_each_table(mrt, net) \ #define ip6mr_for_each_table(mrt, net) \
list_for_each_entry_rcu(mrt, &net->ipv6.mr6_tables, list) list_for_each_entry_rcu(mrt, &net->ipv6.mr6_tables, list, \
lockdep_rtnl_is_held())
static struct mr_table *ip6mr_mr_table_iter(struct net *net, static struct mr_table *ip6mr_mr_table_iter(struct net *net,
struct mr_table *mrt) struct mr_table *mrt)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment