diff options
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index dab97c7cf275..600bb23c4c2e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -2210,7 +2210,8 @@ int netif_receive_skb(struct sk_buff *skb) | |||
2210 | #endif | 2210 | #endif |
2211 | 2211 | ||
2212 | list_for_each_entry_rcu(ptype, &ptype_all, list) { | 2212 | list_for_each_entry_rcu(ptype, &ptype_all, list) { |
2213 | if (ptype->dev == null_or_orig || ptype->dev == skb->dev) { | 2213 | if (ptype->dev == null_or_orig || ptype->dev == skb->dev || |
2214 | ptype->dev == orig_dev) { | ||
2214 | if (pt_prev) | 2215 | if (pt_prev) |
2215 | ret = deliver_skb(skb, pt_prev, orig_dev); | 2216 | ret = deliver_skb(skb, pt_prev, orig_dev); |
2216 | pt_prev = ptype; | 2217 | pt_prev = ptype; |
@@ -2235,7 +2236,8 @@ ncls: | |||
2235 | list_for_each_entry_rcu(ptype, | 2236 | list_for_each_entry_rcu(ptype, |
2236 | &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) { | 2237 | &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) { |
2237 | if (ptype->type == type && | 2238 | if (ptype->type == type && |
2238 | (ptype->dev == null_or_orig || ptype->dev == skb->dev)) { | 2239 | (ptype->dev == null_or_orig || ptype->dev == skb->dev || |
2240 | ptype->dev == orig_dev)) { | ||
2239 | if (pt_prev) | 2241 | if (pt_prev) |
2240 | ret = deliver_skb(skb, pt_prev, orig_dev); | 2242 | ret = deliver_skb(skb, pt_prev, orig_dev); |
2241 | pt_prev = ptype; | 2243 | pt_prev = ptype; |