ipv6: gso: remove redundant locking
ipv6_gso_send_check() and ipv6_gso_segment() are called by skb_mac_gso_segment() under rcu lock, no need to use rcu_read_lock() / rcu_read_unlock() Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ea58c18062
commit
b917eb155c
@ -66,7 +66,6 @@ static int ipv6_gso_send_check(struct sk_buff *skb)
|
||||
__skb_pull(skb, sizeof(*ipv6h));
|
||||
err = -EPROTONOSUPPORT;
|
||||
|
||||
rcu_read_lock();
|
||||
ops = rcu_dereference(inet6_offloads[
|
||||
ipv6_gso_pull_exthdrs(skb, ipv6h->nexthdr)]);
|
||||
|
||||
@ -74,7 +73,6 @@ static int ipv6_gso_send_check(struct sk_buff *skb)
|
||||
skb_reset_transport_header(skb);
|
||||
err = ops->callbacks.gso_send_check(skb);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
out:
|
||||
return err;
|
||||
@ -113,13 +111,12 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb,
|
||||
segs = ERR_PTR(-EPROTONOSUPPORT);
|
||||
|
||||
proto = ipv6_gso_pull_exthdrs(skb, ipv6h->nexthdr);
|
||||
rcu_read_lock();
|
||||
|
||||
ops = rcu_dereference(inet6_offloads[proto]);
|
||||
if (likely(ops && ops->callbacks.gso_segment)) {
|
||||
skb_reset_transport_header(skb);
|
||||
segs = ops->callbacks.gso_segment(skb, features);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
if (IS_ERR(segs))
|
||||
goto out;
|
||||
|
Loading…
Reference in New Issue
Block a user