Lines Matching refs:newsk
2293 * Caller must unlock socket even in error path (bh_unlock_sock(newsk))
2300 struct sock *newsk;
2302 newsk = sk_prot_alloc(prot, priority, sk->sk_family);
2303 if (!newsk)
2306 sock_copy(newsk, sk);
2308 newsk->sk_prot_creator = prot;
2311 if (likely(newsk->sk_net_refcnt)) {
2312 get_net_track(sock_net(newsk), &newsk->ns_tracker, priority);
2313 sock_inuse_add(sock_net(newsk), 1);
2320 __netns_tracker_alloc(sock_net(newsk), &newsk->ns_tracker,
2323 sk_node_init(&newsk->sk_node);
2324 sock_lock_init(newsk);
2325 bh_lock_sock(newsk);
2326 newsk->sk_backlog.head = newsk->sk_backlog.tail = NULL;
2327 newsk->sk_backlog.len = 0;
2329 atomic_set(&newsk->sk_rmem_alloc, 0);
2332 refcount_set(&newsk->sk_wmem_alloc, 1);
2334 atomic_set(&newsk->sk_omem_alloc, 0);
2335 sk_init_common(newsk);
2337 newsk->sk_dst_cache = NULL;
2338 newsk->sk_dst_pending_confirm = 0;
2339 newsk->sk_wmem_queued = 0;
2340 newsk->sk_forward_alloc = 0;
2341 newsk->sk_reserved_mem = 0;
2342 atomic_set(&newsk->sk_drops, 0);
2343 newsk->sk_send_head = NULL;
2344 newsk->sk_userlocks = sk->sk_userlocks & ~SOCK_BINDPORT_LOCK;
2345 atomic_set(&newsk->sk_zckey, 0);
2347 sock_reset_flag(newsk, SOCK_DONE);
2350 newsk->sk_memcg = NULL;
2352 cgroup_sk_clone(&newsk->sk_cgrp_data);
2361 is_charged = sk_filter_charge(newsk, filter);
2362 RCU_INIT_POINTER(newsk->sk_filter, filter);
2365 if (unlikely(!is_charged || xfrm_sk_clone_policy(newsk, sk))) {
2371 RCU_INIT_POINTER(newsk->sk_filter, NULL);
2372 sk_free_unlock_clone(newsk);
2373 newsk = NULL;
2376 RCU_INIT_POINTER(newsk->sk_reuseport_cb, NULL);
2378 if (bpf_sk_storage_clone(sk, newsk)) {
2379 sk_free_unlock_clone(newsk);
2380 newsk = NULL;
2387 if (sk_user_data_is_nocopy(newsk))
2388 newsk->sk_user_data = NULL;
2390 newsk->sk_err = 0;
2391 newsk->sk_err_soft = 0;
2392 newsk->sk_priority = 0;
2393 newsk->sk_incoming_cpu = raw_smp_processor_id();
2399 refcount_set(&newsk->sk_refcnt, 2);
2401 sk_set_socket(newsk, NULL);
2402 sk_tx_queue_clear(newsk);
2403 RCU_INIT_POINTER(newsk->sk_wq, NULL);
2405 if (newsk->sk_prot->sockets_allocated)
2406 sk_sockets_allocated_inc(newsk);
2408 if (sock_needs_netstamp(sk) && newsk->sk_flags & SK_FLAGS_TIMESTAMP)
2411 return newsk;