netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Miller <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
Date: Wed, 08 Dec 2010 08:47:31 -0800 (PST)	[thread overview]
Message-ID: <20101208.084731.189716071.davem@davemloft.net> (raw)
In-Reply-To: <1291200914.2856.546.camel@edumazet-laptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
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 <greearb@candelatech.com>
> Signed-off-by: Jesse Gross <jesse@nicira.com>
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
> Tested-by: Michael Leun <lkml20101129@newton.leun.net>
> ---
> 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);
>  
> 
> 

  parent reply	other threads:[~2010-12-08 16:47 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-29 19:17 2.6.35 -> 2.6.36 panic when vlan and promisc with tg3 Michael Leun
2010-11-30  0:19 ` Ben Greear
2010-11-30  3:10   ` Jesse Gross
2010-11-30  3:26     ` David Miller
2010-11-30  8:59   ` Michael Leun
2010-11-30  9:20     ` Eric Dumazet
2010-11-30 22:27       ` Jesse Gross
2010-12-01 10:17       ` Michael Leun
2010-12-01 10:55         ` [PATCH 2.6.36] vlan: Avoid hwaccel vlan packets when vid not used Eric Dumazet
2010-12-05  2:07           ` Michael Leun
2010-12-05  8:03             ` Eric Dumazet
2010-12-05  9:55               ` Michael Leun
     [not found]                 ` <20101205114404.7c0cddc2@xenia.leun.net>
     [not found]                   ` <AANLkTikrDTCDxsyOG4m0XcrOY=3pTRwWqnPGsio9cBFj@mail.gmail.com>
2010-12-06 19:34                     ` Michael Leun
2010-12-06 20:04                       ` Jesse Gross
2010-12-06 21:27                         ` Michael Leun
2010-12-13  0:11                           ` Jesse Gross
2010-12-13 22:45                             ` Matt Carlson
2010-12-14  4:07                               ` Jesse Gross
2010-12-14 19:15                                 ` Matt Carlson
2010-12-14 21:46                                   ` Jesse Gross
2010-12-15  0:24                                   ` Michael Leun
2010-12-15  1:34                                     ` Matt Carlson
2010-12-15  7:16                                       ` Michael Leun
2010-12-19  3:38                                         ` Jesse Gross
2011-01-07  3:24                                           ` Matt Carlson
2011-01-07  4:36                                             ` Jesse Gross
2011-01-13  1:21                                               ` Matt Carlson
2011-01-13 15:06                                                 ` Jesse Gross
2011-01-13 20:50                                                   ` Matt Carlson
2011-01-13 21:58                                                     ` Jesse Gross
2011-01-14  1:15                                                       ` Matt Carlson
2011-01-14 17:49                                                         ` Jesse Gross
2011-01-14 18:38                                                           ` Matt Carlson
2011-01-19 16:15                                                             ` Jesse Gross
2011-01-01 17:03                                   ` Eric Dumazet
2011-01-02  0:27                                     ` Jesse Gross
2011-01-02 16:05                                       ` Eric Dumazet
2011-01-06 21:01                                         ` Jesse Gross
2011-01-06 23:34                                           ` Eric Dumazet
2011-01-07  1:20                                             ` Eric Dumazet
2011-01-07  2:29                                               ` Matt Carlson
2011-01-07  2:41                                                 ` Eric Dumazet
2011-01-07  2:43                                                   ` Eric Dumazet
2011-01-07  2:59                                                     ` Matt Carlson
2011-01-07  3:04                                                       ` Eric Dumazet
2011-01-07  3:41                                                         ` Matt Carlson
2011-01-07  3:54                                                           ` Eric Dumazet
2011-01-07  4:38                                                           ` Jesse Gross
2010-12-08 16:47           ` David Miller [this message]
2010-12-08 23:06             ` [stable] " Greg KH
2010-12-08 23:16             ` Greg KH
2010-12-09  1:25               ` Eric Dumazet
2010-12-09 20:13                 ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20101208.084731.189716071.davem@davemloft.net \
    --to=davem@davemloft.net \
    --cc=eric.dumazet@gmail.com \
    --cc=greearb@candelatech.com \
    --cc=jesse@nicira.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkml20101129@newton.leun.net \
    --cc=netdev@vger.kernel.org \
    --cc=stable@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).