__skb_pull(skb, sizeof(*ipv6h));
        err = -EPROTONOSUPPORT;
 
-       rcu_read_lock();
        ops = rcu_dereference(inet6_offloads[
                ipv6_gso_pull_exthdrs(skb, ipv6h->nexthdr)]);
 
                skb_reset_transport_header(skb);
                err = ops->callbacks.gso_send_check(skb);
        }
-       rcu_read_unlock();
 
 out:
        return err;
        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;