Lines Matching refs:newsk
1479 static void sk_update_clone(const struct sock *sk, struct sock *newsk) in sk_update_clone() argument
1482 sock_update_memcg(newsk); in sk_update_clone()
1494 struct sock *newsk; in sk_clone_lock() local
1497 newsk = sk_prot_alloc(sk->sk_prot, priority, sk->sk_family); in sk_clone_lock()
1498 if (newsk != NULL) { in sk_clone_lock()
1501 sock_copy(newsk, sk); in sk_clone_lock()
1504 get_net(sock_net(newsk)); in sk_clone_lock()
1505 sk_node_init(&newsk->sk_node); in sk_clone_lock()
1506 sock_lock_init(newsk); in sk_clone_lock()
1507 bh_lock_sock(newsk); in sk_clone_lock()
1508 newsk->sk_backlog.head = newsk->sk_backlog.tail = NULL; in sk_clone_lock()
1509 newsk->sk_backlog.len = 0; in sk_clone_lock()
1511 atomic_set(&newsk->sk_rmem_alloc, 0); in sk_clone_lock()
1515 atomic_set(&newsk->sk_wmem_alloc, 1); in sk_clone_lock()
1516 atomic_set(&newsk->sk_omem_alloc, 0); in sk_clone_lock()
1517 skb_queue_head_init(&newsk->sk_receive_queue); in sk_clone_lock()
1518 skb_queue_head_init(&newsk->sk_write_queue); in sk_clone_lock()
1520 spin_lock_init(&newsk->sk_dst_lock); in sk_clone_lock()
1521 rwlock_init(&newsk->sk_callback_lock); in sk_clone_lock()
1522 lockdep_set_class_and_name(&newsk->sk_callback_lock, in sk_clone_lock()
1523 af_callback_keys + newsk->sk_family, in sk_clone_lock()
1524 af_family_clock_key_strings[newsk->sk_family]); in sk_clone_lock()
1526 newsk->sk_dst_cache = NULL; in sk_clone_lock()
1527 newsk->sk_wmem_queued = 0; in sk_clone_lock()
1528 newsk->sk_forward_alloc = 0; in sk_clone_lock()
1529 newsk->sk_send_head = NULL; in sk_clone_lock()
1530 newsk->sk_userlocks = sk->sk_userlocks & ~SOCK_BINDPORT_LOCK; in sk_clone_lock()
1532 sock_reset_flag(newsk, SOCK_DONE); in sk_clone_lock()
1533 skb_queue_head_init(&newsk->sk_error_queue); in sk_clone_lock()
1535 filter = rcu_dereference_protected(newsk->sk_filter, 1); in sk_clone_lock()
1541 is_charged = sk_filter_charge(newsk, filter); in sk_clone_lock()
1543 if (unlikely(!is_charged || xfrm_sk_clone_policy(newsk))) { in sk_clone_lock()
1546 newsk->sk_destruct = NULL; in sk_clone_lock()
1547 bh_unlock_sock(newsk); in sk_clone_lock()
1548 sk_free(newsk); in sk_clone_lock()
1549 newsk = NULL; in sk_clone_lock()
1553 newsk->sk_err = 0; in sk_clone_lock()
1554 newsk->sk_priority = 0; in sk_clone_lock()
1555 newsk->sk_incoming_cpu = raw_smp_processor_id(); in sk_clone_lock()
1556 atomic64_set(&newsk->sk_cookie, 0); in sk_clone_lock()
1562 atomic_set(&newsk->sk_refcnt, 2); in sk_clone_lock()
1575 sk_refcnt_debug_inc(newsk); in sk_clone_lock()
1576 sk_set_socket(newsk, NULL); in sk_clone_lock()
1577 newsk->sk_wq = NULL; in sk_clone_lock()
1579 sk_update_clone(sk, newsk); in sk_clone_lock()
1581 if (newsk->sk_prot->sockets_allocated) in sk_clone_lock()
1582 sk_sockets_allocated_inc(newsk); in sk_clone_lock()
1584 if (newsk->sk_flags & SK_FLAGS_TIMESTAMP) in sk_clone_lock()
1588 return newsk; in sk_clone_lock()