X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Fcore%2Fskbuff.c;h=af9185d0be6a9e3b3b81c10d061b82992c40fc1d;hb=2e31396fa14be50a98c5d2b00416ebd74d381c1f;hp=898cf5c566f921c93fbbaf1a5ee7d0fc0bb72619;hpb=92dea7c06656f709a3957aacef20574ce3dbe6fc;p=~andy%2Flinux diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 898cf5c566f..af9185d0be6 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3327,12 +3327,8 @@ void skb_tstamp_tx(struct sk_buff *orig_skb, if (!sk) return; - skb = skb_clone(orig_skb, GFP_ATOMIC); - if (!skb) - return; - if (hwtstamps) { - *skb_hwtstamps(skb) = + *skb_hwtstamps(orig_skb) = *hwtstamps; } else { /* @@ -3340,9 +3336,13 @@ void skb_tstamp_tx(struct sk_buff *orig_skb, * so keep the shared tx_flags and only * store software time stamp */ - skb->tstamp = ktime_get_real(); + orig_skb->tstamp = ktime_get_real(); } + skb = skb_clone(orig_skb, GFP_ATOMIC); + if (!skb) + return; + serr = SKB_EXT_ERR(skb); memset(serr, 0, sizeof(*serr)); serr->ee.ee_errno = ENOMSG;