From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergei Shtylyov Subject: Re: [PATCH net-next 05/10] ipv6: factor out protocol delivery helper Date: Thu, 8 Nov 2018 12:01:59 +0300 Message-ID: <34872c3b-eba8-d7eb-22da-ee74b52b0610@cogentembedded.com> References: <12bde3e41997a124df10c1af678ace0af50e5d9e.1541588248.git.pabeni@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: "David S. Miller" , Willem de Bruijn , Steffen Klassert , Subash Abhinov Kasiviswanathan To: Paolo Abeni , netdev@vger.kernel.org Return-path: Received: from mail-lj1-f195.google.com ([209.85.208.195]:39607 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726517AbeKHSgd (ORCPT ); Thu, 8 Nov 2018 13:36:33 -0500 Received: by mail-lj1-f195.google.com with SMTP id t9-v6so14088866ljh.6 for ; Thu, 08 Nov 2018 01:02:02 -0800 (PST) In-Reply-To: <12bde3e41997a124df10c1af678ace0af50e5d9e.1541588248.git.pabeni@redhat.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: 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 > --- > 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? > + } > > resubmit_final: > raw = raw6_local_deliver(skb, nexthdr); [...] MBR, Sergei