diff options
author | Taehee Yoo <ap420073@gmail.com> | 2020-02-28 18:01:56 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-02-29 21:37:03 -0800 |
commit | 81390d0c4e56ac7752c97d7e8209357673d1a8ab (patch) | |
tree | baae0ea0a9de2b2d67f72a7c2da94f0fcd02eeca /net/hsr/hsr_slave.c | |
parent | 4b793acdca0050739b99ace6a8b9e7f717f57c6b (diff) | |
download | linux-81390d0c4e56ac7752c97d7e8209357673d1a8ab.tar.gz linux-81390d0c4e56ac7752c97d7e8209357673d1a8ab.tar.bz2 linux-81390d0c4e56ac7752c97d7e8209357673d1a8ab.zip |
hsr: remove unnecessary rcu_read_lock() in hsr module
In order to access the port list, the hsr_port_get_hsr() is used.
And this is protected by RTNL and RCU.
The hsr_fill_info(), hsr_check_carrier(), hsr_dev_open() and
hsr_get_max_mtu() are protected by RTNL.
So, rcu_read_lock() in these functions are not necessary.
The hsr_handle_frame() also uses rcu_read_lock() but this function
is called by packet path.
It's already protected by RCU.
So, the rcu_read_lock() in hsr_handle_frame() can be removed.
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/hsr/hsr_slave.c')
-rw-r--r-- | net/hsr/hsr_slave.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/net/hsr/hsr_slave.c b/net/hsr/hsr_slave.c index 127ebcc0e28f..07edc7f626fe 100644 --- a/net/hsr/hsr_slave.c +++ b/net/hsr/hsr_slave.c @@ -25,7 +25,6 @@ static rx_handler_result_t hsr_handle_frame(struct sk_buff **pskb) return RX_HANDLER_PASS; } - rcu_read_lock(); /* hsr->node_db, hsr->ports */ port = hsr_port_get_rcu(skb->dev); if (!port) goto finish_pass; @@ -45,11 +44,9 @@ static rx_handler_result_t hsr_handle_frame(struct sk_buff **pskb) hsr_forward_skb(skb, port); finish_consume: - rcu_read_unlock(); /* hsr->node_db, hsr->ports */ return RX_HANDLER_CONSUMED; finish_pass: - rcu_read_unlock(); /* hsr->node_db, hsr->ports */ return RX_HANDLER_PASS; } |