summaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorDavid S. Miller2010-04-21 10:14:25 +0200
committerDavid S. Miller2010-04-21 10:14:25 +0200
commit87eb367003887cdc81a5d183efea227b5b488961 (patch)
tree40f617e25a9364d573e3cd2189c9e7fa56c8a0fe /net/core/dev.c
parentnet: Remove two unnecessary exports (skbuff). (diff)
parentnet: Fix an RCU warning in dev_pick_tx() (diff)
downloadkernel-qcow2-linux-87eb367003887cdc81a5d183efea227b5b488961.tar.gz
kernel-qcow2-linux-87eb367003887cdc81a5d183efea227b5b488961.tar.xz
kernel-qcow2-linux-87eb367003887cdc81a5d183efea227b5b488961.zip
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/wireless/iwlwifi/iwl-6000.c net/core/dev.c
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index b31d5d69a467..e904c476b112 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2015,8 +2015,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 && rcu_dereference_check(sk->sk_dst_cache, 1))
- sk_tx_queue_set(sk, queue_index);
+ if (sk) {
+ struct dst_entry *dst = rcu_dereference_check(sk->sk_dst_cache, 1);
+
+ if (dst && skb_dst(skb) == dst)
+ sk_tx_queue_set(sk, queue_index);
+ }
}
}