Message ID | 1378374840-39130-2-git-send-email-jasowang@redhat.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Jason Wang <jasowang@redhat.com> Date: Thu, 5 Sep 2013 17:54:00 +0800 > sock_tx_timestamp() will clear all zerocopy flags of skb which may lead the > frags never to be orphaned. This will break guest to guest traffic when zerocopy > is enabled. Fix this by orphaning the frags before trying to set tx time stamp. > > The issue were introduced by commit eda297729171fe16bf34fe5b0419dfb69060f623 > (tun: Support software transmit time stamping). > > Cc: Richard Cochran <richardcochran@gmail.com> > Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> > Acked-by: Richard Cochran <richardcochran@gmail.com> > Signed-off-by: Jason Wang <jasowang@redhat.com> Applied. I also queued both of these patches to -stable. Thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 2dddb1b..a639de8 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -749,15 +749,17 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev) >= dev->tx_queue_len / tun->numqueues) goto drop; + if (unlikely(skb_orphan_frags(skb, GFP_ATOMIC))) + goto drop; + if (skb->sk) { sock_tx_timestamp(skb->sk, &skb_shinfo(skb)->tx_flags); sw_tx_timestamp(skb); } /* Orphan the skb - required as we might hang on to it - * for indefinite time. */ - if (unlikely(skb_orphan_frags(skb, GFP_ATOMIC))) - goto drop; + * for indefinite time. + */ skb_orphan(skb); nf_reset(skb);