Lines Matching refs:sk
131 void inet_sock_destruct(struct sock *sk) in inet_sock_destruct() argument
133 struct inet_sock *inet = inet_sk(sk); in inet_sock_destruct()
135 __skb_queue_purge(&sk->sk_receive_queue); in inet_sock_destruct()
136 __skb_queue_purge(&sk->sk_error_queue); in inet_sock_destruct()
138 sk_mem_reclaim(sk); in inet_sock_destruct()
140 if (sk->sk_type == SOCK_STREAM && sk->sk_state != TCP_CLOSE) { in inet_sock_destruct()
142 sk->sk_state, sk); in inet_sock_destruct()
145 if (!sock_flag(sk, SOCK_DEAD)) { in inet_sock_destruct()
146 pr_err("Attempt to release alive inet socket %p\n", sk); in inet_sock_destruct()
150 WARN_ON(atomic_read(&sk->sk_rmem_alloc)); in inet_sock_destruct()
151 WARN_ON(atomic_read(&sk->sk_wmem_alloc)); in inet_sock_destruct()
152 WARN_ON(sk->sk_wmem_queued); in inet_sock_destruct()
153 WARN_ON(sk->sk_forward_alloc); in inet_sock_destruct()
156 dst_release(rcu_dereference_check(sk->sk_dst_cache, 1)); in inet_sock_destruct()
157 dst_release(sk->sk_rx_dst); in inet_sock_destruct()
158 sk_refcnt_debug_dec(sk); in inet_sock_destruct()
172 static int inet_autobind(struct sock *sk) in inet_autobind() argument
176 lock_sock(sk); in inet_autobind()
177 inet = inet_sk(sk); in inet_autobind()
179 if (sk->sk_prot->get_port(sk, 0)) { in inet_autobind()
180 release_sock(sk); in inet_autobind()
185 release_sock(sk); in inet_autobind()
194 struct sock *sk = sock->sk; in inet_listen() local
198 lock_sock(sk); in inet_listen()
204 old_state = sk->sk_state; in inet_listen()
220 !inet_csk(sk)->icsk_accept_queue.fastopenq) { in inet_listen()
222 err = fastopen_init_queue(sk, backlog); in inet_listen()
225 err = fastopen_init_queue(sk, in inet_listen()
234 err = inet_csk_listen_start(sk, backlog); in inet_listen()
238 sk->sk_max_ack_backlog = backlog; in inet_listen()
242 release_sock(sk); in inet_listen()
254 struct sock *sk; in inet_create() local
325 sk = sk_alloc(net, PF_INET, GFP_KERNEL, answer_prot); in inet_create()
326 if (!sk) in inet_create()
331 sk->sk_reuse = SK_CAN_REUSE; in inet_create()
333 inet = inet_sk(sk); in inet_create()
351 sock_init_data(sock, sk); in inet_create()
353 sk->sk_destruct = inet_sock_destruct; in inet_create()
354 sk->sk_protocol = protocol; in inet_create()
355 sk->sk_backlog_rcv = sk->sk_prot->backlog_rcv; in inet_create()
365 sk_refcnt_debug_inc(sk); in inet_create()
375 sk->sk_prot->hash(sk); in inet_create()
378 if (sk->sk_prot->init) { in inet_create()
379 err = sk->sk_prot->init(sk); in inet_create()
381 sk_common_release(sk); in inet_create()
398 struct sock *sk = sock->sk; in inet_release() local
400 if (sk) { in inet_release()
404 ip_mc_drop_socket(sk); in inet_release()
414 if (sock_flag(sk, SOCK_LINGER) && in inet_release()
416 timeout = sk->sk_lingertime; in inet_release()
417 sock->sk = NULL; in inet_release()
418 sk->sk_prot->close(sk, timeout); in inet_release()
427 struct sock *sk = sock->sk; in inet_bind() local
428 struct inet_sock *inet = inet_sk(sk); in inet_bind()
429 struct net *net = sock_net(sk); in inet_bind()
435 if (sk->sk_prot->bind) { in inet_bind()
436 err = sk->sk_prot->bind(sk, uaddr, addr_len); in inet_bind()
484 lock_sock(sk); in inet_bind()
488 if (sk->sk_state != TCP_CLOSE || inet->inet_num) in inet_bind()
496 if (sk->sk_prot->get_port(sk, snum)) { in inet_bind()
503 sk->sk_userlocks |= SOCK_BINDADDR_LOCK; in inet_bind()
505 sk->sk_userlocks |= SOCK_BINDPORT_LOCK; in inet_bind()
509 sk_dst_reset(sk); in inet_bind()
512 release_sock(sk); in inet_bind()
521 struct sock *sk = sock->sk; in inet_dgram_connect() local
526 return sk->sk_prot->disconnect(sk, flags); in inet_dgram_connect()
528 if (!inet_sk(sk)->inet_num && inet_autobind(sk)) in inet_dgram_connect()
530 return sk->sk_prot->connect(sk, uaddr, addr_len); in inet_dgram_connect()
534 static long inet_wait_for_connect(struct sock *sk, long timeo, int writebias) in inet_wait_for_connect() argument
538 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in inet_wait_for_connect()
539 sk->sk_write_pending += writebias; in inet_wait_for_connect()
546 while ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) { in inet_wait_for_connect()
547 release_sock(sk); in inet_wait_for_connect()
549 lock_sock(sk); in inet_wait_for_connect()
552 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in inet_wait_for_connect()
554 finish_wait(sk_sleep(sk), &wait); in inet_wait_for_connect()
555 sk->sk_write_pending -= writebias; in inet_wait_for_connect()
566 struct sock *sk = sock->sk; in __inet_stream_connect() local
574 err = sk->sk_prot->disconnect(sk, flags); in __inet_stream_connect()
592 if (sk->sk_state != TCP_CLOSE) in __inet_stream_connect()
595 err = sk->sk_prot->connect(sk, uaddr, addr_len); in __inet_stream_connect()
609 timeo = sock_sndtimeo(sk, flags & O_NONBLOCK); in __inet_stream_connect()
611 if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) { in __inet_stream_connect()
612 int writebias = (sk->sk_protocol == IPPROTO_TCP) && in __inet_stream_connect()
613 tcp_sk(sk)->fastopen_req && in __inet_stream_connect()
614 tcp_sk(sk)->fastopen_req->data ? 1 : 0; in __inet_stream_connect()
617 if (!timeo || !inet_wait_for_connect(sk, timeo, writebias)) in __inet_stream_connect()
628 if (sk->sk_state == TCP_CLOSE) in __inet_stream_connect()
642 err = sock_error(sk) ? : -ECONNABORTED; in __inet_stream_connect()
644 if (sk->sk_prot->disconnect(sk, flags)) in __inet_stream_connect()
655 lock_sock(sock->sk); in inet_stream_connect()
657 release_sock(sock->sk); in inet_stream_connect()
668 struct sock *sk1 = sock->sk; in inet_accept()
699 struct sock *sk = sock->sk; in inet_getname() local
700 struct inet_sock *inet = inet_sk(sk); in inet_getname()
706 (((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_SYN_SENT)) && in inet_getname()
726 struct sock *sk = sock->sk; in inet_sendmsg() local
728 sock_rps_record_flow(sk); in inet_sendmsg()
731 if (!inet_sk(sk)->inet_num && !sk->sk_prot->no_autobind && in inet_sendmsg()
732 inet_autobind(sk)) in inet_sendmsg()
735 return sk->sk_prot->sendmsg(sk, msg, size); in inet_sendmsg()
742 struct sock *sk = sock->sk; in inet_sendpage() local
744 sock_rps_record_flow(sk); in inet_sendpage()
747 if (!inet_sk(sk)->inet_num && !sk->sk_prot->no_autobind && in inet_sendpage()
748 inet_autobind(sk)) in inet_sendpage()
751 if (sk->sk_prot->sendpage) in inet_sendpage()
752 return sk->sk_prot->sendpage(sk, page, offset, size, flags); in inet_sendpage()
760 struct sock *sk = sock->sk; in inet_recvmsg() local
764 sock_rps_record_flow(sk); in inet_recvmsg()
766 err = sk->sk_prot->recvmsg(sk, msg, size, flags & MSG_DONTWAIT, in inet_recvmsg()
776 struct sock *sk = sock->sk; in inet_shutdown() local
788 lock_sock(sk); in inet_shutdown()
790 if ((1 << sk->sk_state) & in inet_shutdown()
797 switch (sk->sk_state) { in inet_shutdown()
803 sk->sk_shutdown |= how; in inet_shutdown()
804 if (sk->sk_prot->shutdown) in inet_shutdown()
805 sk->sk_prot->shutdown(sk, how); in inet_shutdown()
817 err = sk->sk_prot->disconnect(sk, O_NONBLOCK); in inet_shutdown()
823 sk->sk_state_change(sk); in inet_shutdown()
824 release_sock(sk); in inet_shutdown()
841 struct sock *sk = sock->sk; in inet_ioctl() local
843 struct net *net = sock_net(sk); in inet_ioctl()
847 err = sock_get_timestamp(sk, (struct timeval __user *)arg); in inet_ioctl()
850 err = sock_get_timestampns(sk, (struct timespec __user *)arg); in inet_ioctl()
876 if (sk->sk_prot->ioctl) in inet_ioctl()
877 err = sk->sk_prot->ioctl(sk, cmd, arg); in inet_ioctl()
889 struct sock *sk = sock->sk; in inet_compat_ioctl() local
892 if (sk->sk_prot->compat_ioctl) in inet_compat_ioctl()
893 err = sk->sk_prot->compat_ioctl(sk, cmd, arg); in inet_compat_ioctl()
1105 static int inet_sk_reselect_saddr(struct sock *sk) in inet_sk_reselect_saddr() argument
1107 struct inet_sock *inet = inet_sk(sk); in inet_sk_reselect_saddr()
1116 sock_owned_by_user(sk)); in inet_sk_reselect_saddr()
1122 rt = ip_route_connect(fl4, daddr, 0, RT_CONN_FLAGS(sk), in inet_sk_reselect_saddr()
1123 sk->sk_bound_dev_if, sk->sk_protocol, in inet_sk_reselect_saddr()
1124 inet->inet_sport, inet->inet_dport, sk); in inet_sk_reselect_saddr()
1128 sk_setup_caps(sk, &rt->dst); in inet_sk_reselect_saddr()
1150 __sk_prot_rehash(sk); in inet_sk_reselect_saddr()
1154 int inet_sk_rebuild_header(struct sock *sk) in inet_sk_rebuild_header() argument
1156 struct inet_sock *inet = inet_sk(sk); in inet_sk_rebuild_header()
1157 struct rtable *rt = (struct rtable *)__sk_dst_check(sk, 0); in inet_sk_rebuild_header()
1175 rt = ip_route_output_ports(sock_net(sk), fl4, sk, daddr, inet->inet_saddr, in inet_sk_rebuild_header()
1177 sk->sk_protocol, RT_CONN_FLAGS(sk), in inet_sk_rebuild_header()
1178 sk->sk_bound_dev_if); in inet_sk_rebuild_header()
1181 sk_setup_caps(sk, &rt->dst); in inet_sk_rebuild_header()
1186 sk->sk_route_caps = 0; in inet_sk_rebuild_header()
1192 sk->sk_state != TCP_SYN_SENT || in inet_sk_rebuild_header()
1193 (sk->sk_userlocks & SOCK_BINDADDR_LOCK) || in inet_sk_rebuild_header()
1194 (err = inet_sk_reselect_saddr(sk)) != 0) in inet_sk_rebuild_header()
1195 sk->sk_err_soft = -err; in inet_sk_rebuild_header()
1391 int inet_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len) in inet_recv_error() argument
1393 if (sk->sk_family == AF_INET) in inet_recv_error()
1394 return ip_recv_error(sk, msg, len, addr_len); in inet_recv_error()
1396 if (sk->sk_family == AF_INET6) in inet_recv_error()
1397 return pingv6_ops.ipv6_recv_error(sk, msg, len, addr_len); in inet_recv_error()
1433 int inet_ctl_sock_create(struct sock **sk, unsigned short family, in inet_ctl_sock_create() argument
1441 *sk = sock->sk; in inet_ctl_sock_create()
1442 (*sk)->sk_allocation = GFP_ATOMIC; in inet_ctl_sock_create()
1447 (*sk)->sk_prot->unhash(*sk); in inet_ctl_sock_create()
1449 sk_change_net(*sk, net); in inet_ctl_sock_create()