From patchwork Sat Jun 27 02:04:03 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 29221 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@bilbo.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from ozlabs.org (ozlabs.org [203.10.76.45]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mx.ozlabs.org", Issuer "CA Cert Signing Authority" (verified OK)) by bilbo.ozlabs.org (Postfix) with ESMTPS id 5DF3EB70A9 for ; Sat, 27 Jun 2009 12:04:16 +1000 (EST) Received: by ozlabs.org (Postfix) id 4AB33DDD0C; Sat, 27 Jun 2009 12:04:16 +1000 (EST) Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id CD540DDD04 for ; Sat, 27 Jun 2009 12:04:15 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755593AbZF0CEH (ORCPT ); Fri, 26 Jun 2009 22:04:07 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755410AbZF0CEG (ORCPT ); Fri, 26 Jun 2009 22:04:06 -0400 Received: from rhun.apana.org.au ([64.62.148.172]:47899 "EHLO arnor.apana.org.au" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755227AbZF0CEE (ORCPT ); Fri, 26 Jun 2009 22:04:04 -0400 Received: from gondolin.me.apana.org.au ([192.168.0.6]) by arnor.apana.org.au with esmtp (Exim 4.63 #1 (Debian)) id 1MKNGw-0000XE-BS; Sat, 27 Jun 2009 12:04:06 +1000 Received: from herbert by gondolin.me.apana.org.au with local (Exim 4.69) (envelope-from ) id 1MKNGu-0005Bp-7m; Sat, 27 Jun 2009 10:04:04 +0800 Date: Sat, 27 Jun 2009 10:04:03 +0800 From: Herbert Xu To: Andrew Morton Cc: netdev@vger.kernel.org, "David S. Miller" , Oliver Hartkopp , bugzilla-daemon@bugzilla.kernel.org, bugme-daemon@bugzilla.kernel.org, pm@debian.org Subject: Re: [Bugme-new] [Bug 13627] New: Tunnel device ignores TCP/UDP traffic Message-ID: <20090627020403.GB19639@gondor.apana.org.au> References: <20090626124444.c24d9b38.akpm@linux-foundation.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20090626124444.c24d9b38.akpm@linux-foundation.org> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Fri, Jun 26, 2009 at 12:44:44PM -0700, Andrew Morton wrote: > > It's a post-2.6.30 regression which Paul has bisected down to > > commit d55d87fdff8252d0e2f7c28c2d443aee17e9d70f > Author: Herbert Xu > AuthorDate: Mon Jun 22 02:25:25 2009 +0000 > Commit: David S. Miller > CommitDate: Tue Jun 23 16:36:25 2009 -0700 > > net: Move rx skb_orphan call to where needed > > (thanks for doing the bisection!) Doh, I'd forgotten about transparent proxying. inet: Call skb_orphan before tproxy activates As transparent proxying looks up the socket early and assigns it to the skb for later processing, we must drop any existing socket ownership prior to that in order to distinguish between the case where tproxy is active and where it is not. Signed-off-by: Herbert Xu Cheers, diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c index 490ce20..db46b4b 100644 --- a/net/ipv4/ip_input.c +++ b/net/ipv4/ip_input.c @@ -440,6 +440,9 @@ int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, /* Remove any debris in the socket control block */ memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); + /* Must drop socket now because of tproxy. */ + skb_orphan(skb); + return NF_HOOK(PF_INET, NF_INET_PRE_ROUTING, skb, dev, NULL, ip_rcv_finish); diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c index c3a07d7..6d6a427 100644 --- a/net/ipv6/ip6_input.c +++ b/net/ipv6/ip6_input.c @@ -139,6 +139,9 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt rcu_read_unlock(); + /* Must drop socket now because of tproxy. */ + skb_orphan(skb); + return NF_HOOK(PF_INET6, NF_INET_PRE_ROUTING, skb, dev, NULL, ip6_rcv_finish); err: