tcp, ulp: Pass lockdep expression to RCU lists
authorAmol Grover <frextrite@gmail.com>
Fri, 21 Feb 2020 15:15:38 +0000 (20:45 +0530)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Feb 2020 21:01:54 +0000 (13:01 -0800)
tcp_ulp_list is traversed using list_for_each_entry_rcu
outside an RCU read-side critical section but under the protection
of tcp_ulp_list_lock.

Hence, add corresponding lockdep expression to silence false-positive
warnings, and harden RCU lists.t

Signed-off-by: Amol Grover <frextrite@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_ulp.c

index 6c43fa1..2703f24 100644 (file)
@@ -22,7 +22,8 @@ static struct tcp_ulp_ops *tcp_ulp_find(const char *name)
 {
        struct tcp_ulp_ops *e;
 
-       list_for_each_entry_rcu(e, &tcp_ulp_list, list) {
+       list_for_each_entry_rcu(e, &tcp_ulp_list, list,
+                               lockdep_is_held(&tcp_ulp_list_lock)) {
                if (strcmp(e->name, name) == 0)
                        return e;
        }