Hi, On Thu, 2018-11-08 at 12:01 +0300, Sergei Shtylyov wrote: > On 11/7/2018 2:38 PM, Paolo Abeni wrote: > > > So that we can re-use it at the UDP level in the next patch > > > > rfc v3 -> v1: > > - add the helper declaration into the ipv6 header > > > > Signed-off-by: Paolo Abeni <pab...@redhat.com> > > --- > > include/net/ipv6.h | 2 ++ > > net/ipv6/ip6_input.c | 28 ++++++++++++++++------------ > > 2 files changed, 18 insertions(+), 12 deletions(-) > > > > diff --git a/include/net/ipv6.h b/include/net/ipv6.h > > index 829650540780..daf80863d3a5 100644 > > --- a/include/net/ipv6.h > > +++ b/include/net/ipv6.h > > [...] > > @@ -319,28 +319,26 @@ void ipv6_list_rcv(struct list_head *head, struct > > packet_type *pt, > > /* > > * Deliver the packet to the host > > */ > > - > > - > > -static int ip6_input_finish(struct net *net, struct sock *sk, struct > > sk_buff *skb) > > +void ip6_protocol_deliver_rcu(struct net *net, struct sk_buff *skb, int > > nexthdr, > > + bool have_final) > > { > > const struct inet6_protocol *ipprot; > > struct inet6_dev *idev; > > unsigned int nhoff; > > - int nexthdr; > > bool raw; > > - bool have_final = false; > > > > /* > > * Parse extension headers > > */ > > > > - rcu_read_lock(); > > resubmit: > > idev = ip6_dst_idev(skb_dst(skb)); > > - if (!pskb_pull(skb, skb_transport_offset(skb))) > > - goto discard; > > nhoff = IP6CB(skb)->nhoff; > > - nexthdr = skb_network_header(skb)[nhoff]; > > + if (!have_final) { > > Haven't you removed this variable above? > > > + if (!pskb_pull(skb, skb_transport_offset(skb))) > > + goto discard; > > + nexthdr = skb_network_header(skb)[nhoff]; > > And this?
Thanks for reviewing. Both local variables are now function arguments (see the function signature, far above in this chunk). Cheers, Paolo