ipmr: convert /proc handlers to rcu_read_lock()
authorEric Dumazet <edumazet@google.com>
Thu, 23 Jun 2022 04:34:47 +0000 (04:34 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 24 Jun 2022 10:34:38 +0000 (11:34 +0100)
We can use standard rcu_read_lock(), to get rid
of last read_lock(&mrt_lock) call points.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ipmr.c
net/ipv6/ip6mr.c

index 38963b8..2e39f73 100644 (file)
@@ -2895,7 +2895,7 @@ out:
  */
 
 static void *ipmr_vif_seq_start(struct seq_file *seq, loff_t *pos)
-       __acquires(mrt_lock)
+       __acquires(RCU)
 {
        struct mr_vif_iter *iter = seq->private;
        struct net *net = seq_file_net(seq);
@@ -2907,14 +2907,14 @@ static void *ipmr_vif_seq_start(struct seq_file *seq, loff_t *pos)
 
        iter->mrt = mrt;
 
-       read_lock(&mrt_lock);
+       rcu_read_lock();
        return mr_vif_seq_start(seq, pos);
 }
 
 static void ipmr_vif_seq_stop(struct seq_file *seq, void *v)
-       __releases(mrt_lock)
+       __releases(RCU)
 {
-       read_unlock(&mrt_lock);
+       rcu_read_unlock();
 }
 
 static int ipmr_vif_seq_show(struct seq_file *seq, void *v)
index f0a9bce..7381cfd 100644 (file)
@@ -404,7 +404,7 @@ static void ip6mr_free_table(struct mr_table *mrt)
  */
 
 static void *ip6mr_vif_seq_start(struct seq_file *seq, loff_t *pos)
-       __acquires(mrt_lock)
+       __acquires(RCU)
 {
        struct mr_vif_iter *iter = seq->private;
        struct net *net = seq_file_net(seq);
@@ -416,14 +416,14 @@ static void *ip6mr_vif_seq_start(struct seq_file *seq, loff_t *pos)
 
        iter->mrt = mrt;
 
-       read_lock(&mrt_lock);
+       rcu_read_lock();
        return mr_vif_seq_start(seq, pos);
 }
 
 static void ip6mr_vif_seq_stop(struct seq_file *seq, void *v)
-       __releases(mrt_lock)
+       __releases(RCU)
 {
-       read_unlock(&mrt_lock);
+       rcu_read_unlock();
 }
 
 static int ip6mr_vif_seq_show(struct seq_file *seq, void *v)