X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=net%2Fcore%2Fdev.c;h=e904c476b1122738d4b72ae2ddab1988ee36ba2a;hb=87eb367003887cdc81a5d183efea227b5b488961;hp=b31d5d69a467c531d68e350d4d02fb4acc08b1d7;hpb=ccb7c7732e2ceb4e81a7806faf1670be9681ccd2;p=deliverable%2Flinux.git 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); + } } }