diff --git a/[refs] b/[refs] index 1b1a6aea7c05..ef17fbcbe908 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4eaa0e3c869acd5dbc7c2e3818a9ae9cbf221d27 +refs/heads/master: 8728c544a9cbdcb0034aa5c45706c5f953f030ee diff --git a/trunk/net/core/dev.c b/trunk/net/core/dev.c index 1c8a0ce473a8..92584bfef09b 100644 --- a/trunk/net/core/dev.c +++ b/trunk/net/core/dev.c @@ -1989,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(sk->sk_dst_cache); + + if (dst && skb_dst(skb) == dst) + sk_tx_queue_set(sk, queue_index); + } } }