Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754745Ab0LHQrG (ORCPT ); Wed, 8 Dec 2010 11:47:06 -0500 Received: from 74-93-104-97-Washington.hfc.comcastbusiness.net ([74.93.104.97]:48677 "EHLO sunset.davemloft.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752184Ab0LHQrE (ORCPT ); Wed, 8 Dec 2010 11:47:04 -0500 Date: Wed, 08 Dec 2010 08:47:31 -0800 (PST) Message-Id: <20101208.084731.189716071.davem@davemloft.net> To: eric.dumazet@gmail.com Cc: lkml20101129@newton.leun.net, greearb@candelatech.com, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, jesse@nicira.com, stable@kernel.org Subject: Re: [PATCH 2.6.36] vlan: Avoid hwaccel vlan packets when vid not used From: David Miller In-Reply-To: <1291200914.2856.546.camel@edumazet-laptop> References: <1291108809.2904.3.camel@edumazet-laptop> <20101201111716.424fb771@xenia.leun.net> <1291200914.2856.546.camel@edumazet-laptop> X-Mailer: Mew version 6.3 on Emacs 23.1 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2539 Lines: 76 From: Eric Dumazet Date: Wed, 01 Dec 2010 11:55:14 +0100 Greg/-stable, please integrate this patch from Eric into 2.6.36 if you haven't already done so. Thanks! > [PATCH v2 2.6.36] vlan: Avoid hwaccel vlan packets when vid not used. > > Normally hardware accelerated vlan packets are quickly dropped if > there is no corresponding vlan device configured. The one exception > is promiscuous mode, where we allow all of these packets through so > they can be picked up by tcpdump. However, this behavior causes a > crash if we actually try to receive these packets. This fixes that > crash by ignoring packets with vids not corresponding to a configured > device in the vlan hwaccel routines and then dropping them before they > get to consumers in the network stack. > > Reported-by: Ben Greear > Signed-off-by: Jesse Gross > Signed-off-by: Eric Dumazet > Tested-by: Michael Leun > --- > v2: survives to tcpdump :) > > net/core/dev.c | 10 ++++++++++ > net/8021q/vlan_core.c | 3 +++ > 2 files changed, 13 insertions(+) > > --- linux-2.6.36/net/core/dev.c.orig > +++ linux-2.6.36/net/core/dev.c > @@ -2891,6 +2891,15 @@ > ncls: > #endif > > + /* If we got this far with a hardware accelerated VLAN tag, it means > + * that we were put in promiscuous mode but nobody is interested in > + * this vid. Drop the packet now to prevent it from getting propagated > + * to other parts of the stack that won't know how to deal with packets > + * tagged in this manner. > + */ > + if (unlikely(vlan_tx_tag_present(skb))) > + goto bypass; > + > /* Handle special case of bridge or macvlan */ > rx_handler = rcu_dereference(skb->dev->rx_handler); > if (rx_handler) { > @@ -2927,6 +2936,7 @@ > } > } > > +bypass: > if (pt_prev) { > ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev); > } else { > --- linux-2.6.36/net/8021q/vlan_core.c.orig > +++ linux-2.6.36/net/8021q/vlan_core.c > @@ -43,6 +43,9 @@ > struct net_device *dev = skb->dev; > struct vlan_rx_stats *rx_stats; > > + if (unlikely(!is_vlan_dev(dev))) > + return 0; > + > skb->dev = vlan_dev_info(dev)->real_dev; > netif_nit_deliver(skb); > > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/