Ignore:
Timestamp:
Apr 16, 2017, 3:07:01 PM (3 months ago)
Author:
brainslayer
Message:

update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-3.18/net/core/skbuff.c

    r31296 r31869  
    37453745        struct sock *sk = skb->sk;
    37463746
    3747         /* take a reference to prevent skb_orphan() from freeing the socket */
    3748         sock_hold(sk);
    3749 
    3750         *skb_hwtstamps(skb) = *hwtstamps;
    3751         __skb_complete_tx_timestamp(skb, sk, SCM_TSTAMP_SND);
    3752 
    3753         sock_put(sk);
     3747        /* Take a reference to prevent skb_orphan() from freeing the socket,
     3748         * but only if the socket refcount is not zero.
     3749         */
     3750        if (likely(atomic_inc_not_zero(&sk->sk_refcnt))) {
     3751                *skb_hwtstamps(skb) = *hwtstamps;
     3752                __skb_complete_tx_timestamp(skb, sk, SCM_TSTAMP_SND);
     3753                sock_put(sk);
     3754        }
    37543755}
    37553756EXPORT_SYMBOL_GPL(skb_complete_tx_timestamp);
     
    37893790        struct sock *sk = skb->sk;
    37903791        struct sock_exterr_skb *serr;
    3791         int err;
     3792        int err = 1;
    37923793
    37933794        skb->wifi_acked_valid = 1;
     
    37993800        serr->ee.ee_origin = SO_EE_ORIGIN_TXSTATUS;
    38003801
    3801         /* take a reference to prevent skb_orphan() from freeing the socket */
    3802         sock_hold(sk);
    3803 
    3804         err = sock_queue_err_skb(sk, skb);
     3802        /* Take a reference to prevent skb_orphan() from freeing the socket,
     3803         * but only if the socket refcount is not zero.
     3804         */
     3805        if (likely(atomic_inc_not_zero(&sk->sk_refcnt))) {
     3806                err = sock_queue_err_skb(sk, skb);
     3807                sock_put(sk);
     3808        }
    38053809        if (err)
    38063810                kfree_skb(skb);
    3807 
    3808         sock_put(sk);
    38093811}
    38103812EXPORT_SYMBOL_GPL(skb_complete_wifi_ack);
Note: See TracChangeset for help on using the changeset viewer.