Lines Matching refs:newsk
1490 static void sk_update_clone(const struct sock *sk, struct sock *newsk) in sk_update_clone() argument
1493 sock_update_memcg(newsk); in sk_update_clone()
1505 struct sock *newsk; in sk_clone_lock() local
1508 newsk = sk_prot_alloc(sk->sk_prot, priority, sk->sk_family); in sk_clone_lock()
1509 if (newsk != NULL) { in sk_clone_lock()
1512 sock_copy(newsk, sk); in sk_clone_lock()
1515 if (likely(newsk->sk_net_refcnt)) in sk_clone_lock()
1516 get_net(sock_net(newsk)); in sk_clone_lock()
1517 sk_node_init(&newsk->sk_node); in sk_clone_lock()
1518 sock_lock_init(newsk); in sk_clone_lock()
1519 bh_lock_sock(newsk); in sk_clone_lock()
1520 newsk->sk_backlog.head = newsk->sk_backlog.tail = NULL; in sk_clone_lock()
1521 newsk->sk_backlog.len = 0; in sk_clone_lock()
1523 atomic_set(&newsk->sk_rmem_alloc, 0); in sk_clone_lock()
1527 atomic_set(&newsk->sk_wmem_alloc, 1); in sk_clone_lock()
1528 atomic_set(&newsk->sk_omem_alloc, 0); in sk_clone_lock()
1529 skb_queue_head_init(&newsk->sk_receive_queue); in sk_clone_lock()
1530 skb_queue_head_init(&newsk->sk_write_queue); in sk_clone_lock()
1532 rwlock_init(&newsk->sk_callback_lock); in sk_clone_lock()
1533 lockdep_set_class_and_name(&newsk->sk_callback_lock, in sk_clone_lock()
1534 af_callback_keys + newsk->sk_family, in sk_clone_lock()
1535 af_family_clock_key_strings[newsk->sk_family]); in sk_clone_lock()
1537 newsk->sk_dst_cache = NULL; in sk_clone_lock()
1538 newsk->sk_wmem_queued = 0; in sk_clone_lock()
1539 newsk->sk_forward_alloc = 0; in sk_clone_lock()
1540 newsk->sk_send_head = NULL; in sk_clone_lock()
1541 newsk->sk_userlocks = sk->sk_userlocks & ~SOCK_BINDPORT_LOCK; in sk_clone_lock()
1543 sock_reset_flag(newsk, SOCK_DONE); in sk_clone_lock()
1544 skb_queue_head_init(&newsk->sk_error_queue); in sk_clone_lock()
1546 filter = rcu_dereference_protected(newsk->sk_filter, 1); in sk_clone_lock()
1552 is_charged = sk_filter_charge(newsk, filter); in sk_clone_lock()
1554 if (unlikely(!is_charged || xfrm_sk_clone_policy(newsk, sk))) { in sk_clone_lock()
1557 newsk->sk_destruct = NULL; in sk_clone_lock()
1558 bh_unlock_sock(newsk); in sk_clone_lock()
1559 sk_free(newsk); in sk_clone_lock()
1560 newsk = NULL; in sk_clone_lock()
1564 newsk->sk_err = 0; in sk_clone_lock()
1565 newsk->sk_priority = 0; in sk_clone_lock()
1566 newsk->sk_incoming_cpu = raw_smp_processor_id(); in sk_clone_lock()
1567 atomic64_set(&newsk->sk_cookie, 0); in sk_clone_lock()
1573 atomic_set(&newsk->sk_refcnt, 2); in sk_clone_lock()
1586 sk_refcnt_debug_inc(newsk); in sk_clone_lock()
1587 sk_set_socket(newsk, NULL); in sk_clone_lock()
1588 newsk->sk_wq = NULL; in sk_clone_lock()
1590 sk_update_clone(sk, newsk); in sk_clone_lock()
1592 if (newsk->sk_prot->sockets_allocated) in sk_clone_lock()
1593 sk_sockets_allocated_inc(newsk); in sk_clone_lock()
1596 newsk->sk_flags & SK_FLAGS_TIMESTAMP) in sk_clone_lock()
1600 return newsk; in sk_clone_lock()