Merge tag 'microcode_fixes_for-3.21' of git://git.kernel.org/pub/scm/linux/kernel...
[firefly-linux-kernel-4.4.55.git] / net / core / timestamping.c
index a8770391ea5bfc0db85135cf913c84d09f55cedb..43d3dd62fcc8eccd95a4618f68b0553cf7309c01 100644 (file)
@@ -36,10 +36,9 @@ void skb_clone_tx_timestamp(struct sk_buff *skb)
 {
        struct phy_device *phydev;
        struct sk_buff *clone;
-       struct sock *sk = skb->sk;
        unsigned int type;
 
-       if (!sk)
+       if (!skb->sk)
                return;
 
        type = classify(skb);
@@ -48,50 +47,14 @@ void skb_clone_tx_timestamp(struct sk_buff *skb)
 
        phydev = skb->dev->phydev;
        if (likely(phydev->drv->txtstamp)) {
-               if (!atomic_inc_not_zero(&sk->sk_refcnt))
+               clone = skb_clone_sk(skb);
+               if (!clone)
                        return;
-
-               clone = skb_clone(skb, GFP_ATOMIC);
-               if (!clone) {
-                       sock_put(sk);
-                       return;
-               }
-
-               clone->sk = sk;
                phydev->drv->txtstamp(phydev, clone, type);
        }
 }
 EXPORT_SYMBOL_GPL(skb_clone_tx_timestamp);
 
-void skb_complete_tx_timestamp(struct sk_buff *skb,
-                              struct skb_shared_hwtstamps *hwtstamps)
-{
-       struct sock *sk = skb->sk;
-       struct sock_exterr_skb *serr;
-       int err;
-
-       if (!hwtstamps) {
-               sock_put(sk);
-               kfree_skb(skb);
-               return;
-       }
-
-       *skb_hwtstamps(skb) = *hwtstamps;
-
-       serr = SKB_EXT_ERR(skb);
-       memset(serr, 0, sizeof(*serr));
-       serr->ee.ee_errno = ENOMSG;
-       serr->ee.ee_origin = SO_EE_ORIGIN_TIMESTAMPING;
-       skb->sk = NULL;
-
-       err = sock_queue_err_skb(sk, skb);
-
-       sock_put(sk);
-       if (err)
-               kfree_skb(skb);
-}
-EXPORT_SYMBOL_GPL(skb_complete_tx_timestamp);
-
 bool skb_defer_rx_timestamp(struct sk_buff *skb)
 {
        struct phy_device *phydev;