diff options
author | H. Peter Anvin <hpa@zytor.com> | 2010-05-08 14:59:58 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2010-05-08 14:59:58 -0700 |
commit | d7be0ce6afb1df60bc786f57410407ceae92b994 (patch) | |
tree | 5e91acfc12c833531ad3320f274e0cd96a129973 /net/core/dev.c | |
parent | e08cae4181af9483b04ecfac48f01c8e5a5f27bf (diff) | |
parent | 66f41d4c5c8a5deed66fdcc84509376c9a0bf9d8 (diff) | |
download | kernel-crypto-d7be0ce6afb1df60bc786f57410407ceae92b994.tar.gz kernel-crypto-d7be0ce6afb1df60bc786f57410407ceae92b994.tar.xz kernel-crypto-d7be0ce6afb1df60bc786f57410407ceae92b994.zip |
Merge commit 'v2.6.34-rc6' into x86/cpu
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 59d4394d2ce..f769098774b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -80,6 +80,7 @@ #include <linux/types.h> #include <linux/kernel.h> #include <linux/hash.h> +#include <linux/slab.h> #include <linux/sched.h> #include <linux/mutex.h> #include <linux/string.h> @@ -1988,8 +1989,12 @@ static struct netdev_queue *dev_pick_tx(struct net_device *dev, if (dev->real_num_tx_queues > 1) queue_index = skb_tx_hash(dev, skb); - if (sk && sk->sk_dst_cache) - sk_tx_queue_set(sk, queue_index); + if (sk) { + struct dst_entry *dst = rcu_dereference_bh(sk->sk_dst_cache); + + if (dst && skb_dst(skb) == dst) + sk_tx_queue_set(sk, queue_index); + } } } |