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);
>
>
>
next prev 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).