From patchwork Wed May 11 16:47:26 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 621206 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3r4hry40Yvz9t3n for ; Thu, 12 May 2016 02:48:34 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932573AbcEKQsa (ORCPT ); Wed, 11 May 2016 12:48:30 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:25558 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932448AbcEKQsV (ORCPT ); Wed, 11 May 2016 12:48:21 -0400 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.11/8.16.0.11) with SMTP id u4BGlCXk022766 for ; Wed, 11 May 2016 09:48:20 -0700 Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 22v4rchq5q-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Wed, 11 May 2016 09:48:20 -0700 Received: from mx-out.facebook.com (192.168.52.123) by PRN-CHUB10.TheFacebook.com (192.168.16.20) with Microsoft SMTP Server (TLS) id 14.3.248.2; Wed, 11 May 2016 09:48:19 -0700 Received: from devbig284.prn2.facebook.com (10.35.15.32) by mx-out.facebook.com (10.212.236.89) with ESMTP id 29f82896179811e6af730002c95209d8-993e9c50 for ; Wed, 11 May 2016 09:48:19 -0700 From: Tom Herbert To: , CC: Subject: [PATCH net-next 06/13] ipv6: Fix nexthdr for reinjection Date: Wed, 11 May 2016 09:47:26 -0700 Message-ID: <1462985253-2380625-7-git-send-email-tom@herbertland.com> X-Mailer: git-send-email 2.8.0.rc2 In-Reply-To: <1462985253-2380625-1-git-send-email-tom@herbertland.com> References: <1462985253-2380625-1-git-send-email-tom@herbertland.com> X-FB-Internal: Safe MIME-Version: 1.0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-05-11_05:, , signatures=0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In ip6_input_finish the protocol handle returns a value greater than zero the packet needs to be resubmitted using the returned protocol. The returned protocol is being ignored and each time through resubmit nexthdr is taken from an offest in the packet. This patch fixes that so that nexthdr is taken from return value of the protocol handler. Signed-off-by: Tom Herbert --- net/ipv6/ip6_input.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c index 6ed5601..2a0258a 100644 --- a/net/ipv6/ip6_input.c +++ b/net/ipv6/ip6_input.c @@ -222,13 +222,14 @@ static int ip6_input_finish(struct net *net, struct sock *sk, struct sk_buff *sk */ 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]; +resubmit: raw = raw6_local_deliver(skb, nexthdr); ipprot = rcu_dereference(inet6_protos[nexthdr]); if (ipprot) { @@ -256,10 +257,12 @@ resubmit: goto discard; ret = ipprot->handler(skb); - if (ret > 0) + if (ret > 0) { + nexthdr = ret; goto resubmit; - else if (ret == 0) + } else if (ret == 0) { __IP6_INC_STATS(net, idev, IPSTATS_MIB_INDELIVERS); + } } else { if (!raw) { if (xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) {