From c6ec5beecff17d06820aae2464fb9fce9b5c6608 Mon Sep 17 00:00:00 2001 From: Andy Gospodarek Date: Wed, 6 Jan 2010 12:56:37 +0000 Subject: [PATCH] --- yaml --- r: 183435 b: refs/heads/master c: ca8d9ea30bc79b2965a1d169dcb2f48f02af4d2d h: refs/heads/master i: 183433: be9b2e822b47db009576edeb8b77de8ba998a3d7 183431: 83dbb3457814884bbddb378b43a9692a3cb1e827 v: v3 --- [refs] | 2 +- trunk/net/core/dev.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 1007a1755a9e..3d5ccfa55f0b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d160439e7753aa19092bb12d8f4c6c918f8267e0 +refs/heads/master: ca8d9ea30bc79b2965a1d169dcb2f48f02af4d2d diff --git a/trunk/net/core/dev.c b/trunk/net/core/dev.c index f9aa699ab6cb..d9ab9be0c323 100644 --- a/trunk/net/core/dev.c +++ b/trunk/net/core/dev.c @@ -2430,6 +2430,7 @@ int netif_receive_skb(struct sk_buff *skb) struct packet_type *ptype, *pt_prev; struct net_device *orig_dev; struct net_device *null_or_orig; + struct net_device *null_or_bond; int ret = NET_RX_DROP; __be16 type; @@ -2500,21 +2501,19 @@ int netif_receive_skb(struct sk_buff *skb) * bonding interfaces still make their way to any base bonding * device that may have registered for a specific ptype. The * handler may have to adjust skb->dev and orig_dev. - * - * null_or_orig can be overloaded since it will not be set when - * using VLANs on top of bonding. Putting it here prevents - * disturbing the ptype_all handlers above. */ + null_or_bond = NULL; if ((skb->dev->priv_flags & IFF_802_1Q_VLAN) && (vlan_dev_real_dev(skb->dev)->priv_flags & IFF_BONDING)) { - null_or_orig = vlan_dev_real_dev(skb->dev); + null_or_bond = vlan_dev_real_dev(skb->dev); } type = skb->protocol; list_for_each_entry_rcu(ptype, &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) { if (ptype->type == type && (ptype->dev == null_or_orig || - ptype->dev == skb->dev || ptype->dev == orig_dev)) { + ptype->dev == skb->dev || ptype->dev == orig_dev || + ptype->dev == null_or_bond)) { if (pt_prev) ret = deliver_skb(skb, pt_prev, orig_dev); pt_prev = ptype;