Ignore:
Timestamp:
Apr 21, 2017, 4:28:29 AM (5 weeks ago)
Author:
brainslayer
Message:

update

File:
1 edited

Legend:

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

    r28964 r31885  
    14211421                         __func__, atomic_read(&sk->sk_omem_alloc));
    14221422
     1423        if (sk->sk_frag.page) {
     1424                put_page(sk->sk_frag.page);
     1425                sk->sk_frag.page = NULL;
     1426        }
     1427
    14231428        if (sk->sk_peer_cred)
    14241429                put_cred(sk->sk_peer_cred);
     
    15251530
    15261531                if (unlikely(!is_charged || xfrm_sk_clone_policy(newsk))) {
     1532                        /* We need to make sure that we don't uncharge the new
     1533                         * socket if we couldn't charge it in the first place
     1534                         * as otherwise we uncharge the parent's filter.
     1535                         */
     1536                        if (!is_charged)
     1537                                RCU_INIT_POINTER(newsk->sk_filter, NULL);
    15271538                        /* It is still raw copy of parent, so invalidate
    15281539                         * destructor and make plain sk_free() */
     
    25982609
    25992610        sk_refcnt_debug_release(sk);
    2600 
    2601         if (sk->sk_frag.page) {
    2602                 put_page(sk->sk_frag.page);
    2603                 sk->sk_frag.page = NULL;
    2604         }
    26052611
    26062612        sock_put(sk);
Note: See TracChangeset for help on using the changeset viewer.