ipmr: convert /proc handlers to rcu_read_lock()
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>
This commit is contained in:
parent
194366b28b
commit
b96ef16d2f
@ -2895,7 +2895,7 @@ out:
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static void *ipmr_vif_seq_start(struct seq_file *seq, loff_t *pos)
|
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 mr_vif_iter *iter = seq->private;
|
||||||
struct net *net = seq_file_net(seq);
|
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;
|
iter->mrt = mrt;
|
||||||
|
|
||||||
read_lock(&mrt_lock);
|
rcu_read_lock();
|
||||||
return mr_vif_seq_start(seq, pos);
|
return mr_vif_seq_start(seq, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipmr_vif_seq_stop(struct seq_file *seq, void *v)
|
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)
|
static int ipmr_vif_seq_show(struct seq_file *seq, void *v)
|
||||||
|
@ -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)
|
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 mr_vif_iter *iter = seq->private;
|
||||||
struct net *net = seq_file_net(seq);
|
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;
|
iter->mrt = mrt;
|
||||||
|
|
||||||
read_lock(&mrt_lock);
|
rcu_read_lock();
|
||||||
return mr_vif_seq_start(seq, pos);
|
return mr_vif_seq_start(seq, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ip6mr_vif_seq_stop(struct seq_file *seq, void *v)
|
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)
|
static int ip6mr_vif_seq_show(struct seq_file *seq, void *v)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user