diff --git a/[refs] b/[refs] index c04caa2f14ab..2b6112c1d642 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0718bcc09b3597c51e87f265c72135a4928d3c0b +refs/heads/master: f54d9e8d7f7dd60f26157c12acda3fc94fcd9ab7 diff --git a/trunk/net/core/dev.c b/trunk/net/core/dev.c index ea2469398bd5..aa8454901719 100644 --- a/trunk/net/core/dev.c +++ b/trunk/net/core/dev.c @@ -1325,9 +1325,12 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) nskb->next = NULL; rc = dev->hard_start_xmit(nskb, dev); if (unlikely(rc)) { + nskb->next = skb->next; skb->next = nskb; return rc; } + if (unlikely(netif_queue_stopped(dev) && skb->next)) + return NETDEV_TX_BUSY; } while (skb->next); skb->destructor = DEV_GSO_CB(skb)->destructor;