From: Madhuparna Bhowmik <[email protected]>
list_for_each_entry_rcu() has built-in RCU and lock checking.
Pass cond argument to list_for_each_entry_rcu() to silence
false lockdep warning when CONFIG_PROVE_RCU_LIST is enabled
by default.
Signed-off-by: Madhuparna Bhowmik <[email protected]>
---
net/netlabel/netlabel_unlabeled.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c
index d2e4ab8d1cb1..77bb1bb22c3b 100644
--- a/net/netlabel/netlabel_unlabeled.c
+++ b/net/netlabel/netlabel_unlabeled.c
@@ -207,7 +207,8 @@ static struct netlbl_unlhsh_iface *netlbl_unlhsh_search_iface(int ifindex)
bkt = netlbl_unlhsh_hash(ifindex);
bkt_list = &netlbl_unlhsh_rcu_deref(netlbl_unlhsh)->tbl[bkt];
- list_for_each_entry_rcu(iter, bkt_list, list)
+ list_for_each_entry_rcu(iter, bkt_list, list,
+ lockdep_is_held(&netlbl_unlhsh_lock))
if (iter->valid && iter->ifindex == ifindex)
return iter;
--
2.17.1
From: [email protected]
Date: Tue, 18 Feb 2020 23:47:18 +0530
> From: Madhuparna Bhowmik <[email protected]>
>
> list_for_each_entry_rcu() has built-in RCU and lock checking.
>
> Pass cond argument to list_for_each_entry_rcu() to silence
> false lockdep warning when CONFIG_PROVE_RCU_LIST is enabled
> by default.
>
> Signed-off-by: Madhuparna Bhowmik <[email protected]>
Applied.
On Tue, Feb 18, 2020 at 1:17 PM <[email protected]> wrote:
>
> From: Madhuparna Bhowmik <[email protected]>
>
> list_for_each_entry_rcu() has built-in RCU and lock checking.
>
> Pass cond argument to list_for_each_entry_rcu() to silence
> false lockdep warning when CONFIG_PROVE_RCU_LIST is enabled
> by default.
>
> Signed-off-by: Madhuparna Bhowmik <[email protected]>
> ---
> net/netlabel/netlabel_unlabeled.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
Not that this has much bearing since it's already been merged, but for
what it's worth ...
Acked-by: Paul Moore <[email protected]>
> diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c
> index d2e4ab8d1cb1..77bb1bb22c3b 100644
> --- a/net/netlabel/netlabel_unlabeled.c
> +++ b/net/netlabel/netlabel_unlabeled.c
> @@ -207,7 +207,8 @@ static struct netlbl_unlhsh_iface *netlbl_unlhsh_search_iface(int ifindex)
>
> bkt = netlbl_unlhsh_hash(ifindex);
> bkt_list = &netlbl_unlhsh_rcu_deref(netlbl_unlhsh)->tbl[bkt];
> - list_for_each_entry_rcu(iter, bkt_list, list)
> + list_for_each_entry_rcu(iter, bkt_list, list,
> + lockdep_is_held(&netlbl_unlhsh_lock))
> if (iter->valid && iter->ifindex == ifindex)
> return iter;
>
> --
> 2.17.1
--
paul moore
http://www.paul-moore.com