Lines Matching refs:sk

138 #define UNIX_ABSTRACT(sk)	(unix_sk(sk)->addr->hash < UNIX_HASH_SIZE)  argument
182 #define unix_peer(sk) (unix_sk(sk)->peer) argument
184 static inline int unix_our_peer(struct sock *sk, struct sock *osk) in unix_our_peer() argument
186 return unix_peer(osk) == sk; in unix_our_peer()
189 static inline int unix_may_send(struct sock *sk, struct sock *osk) in unix_may_send() argument
191 return unix_peer(osk) == NULL || unix_our_peer(sk, osk); in unix_may_send()
194 static inline int unix_recvq_full(struct sock const *sk) in unix_recvq_full() argument
196 return skb_queue_len(&sk->sk_receive_queue) > sk->sk_max_ack_backlog; in unix_recvq_full()
248 static void __unix_remove_socket(struct sock *sk) in __unix_remove_socket() argument
250 sk_del_node_init(sk); in __unix_remove_socket()
253 static void __unix_insert_socket(struct hlist_head *list, struct sock *sk) in __unix_insert_socket() argument
255 WARN_ON(!sk_unhashed(sk)); in __unix_insert_socket()
256 sk_add_node(sk, list); in __unix_insert_socket()
259 static inline void unix_remove_socket(struct sock *sk) in unix_remove_socket() argument
262 __unix_remove_socket(sk); in unix_remove_socket()
266 static inline void unix_insert_socket(struct hlist_head *list, struct sock *sk) in unix_insert_socket() argument
269 __unix_insert_socket(list, sk); in unix_insert_socket()
367 u_sleep = sk_sleep(&u->sk); in unix_dgram_peer_wake_relay()
374 static int unix_dgram_peer_wake_connect(struct sock *sk, struct sock *other) in unix_dgram_peer_wake_connect() argument
379 u = unix_sk(sk); in unix_dgram_peer_wake_connect()
395 static void unix_dgram_peer_wake_disconnect(struct sock *sk, in unix_dgram_peer_wake_disconnect() argument
400 u = unix_sk(sk); in unix_dgram_peer_wake_disconnect()
412 static void unix_dgram_peer_wake_disconnect_wakeup(struct sock *sk, in unix_dgram_peer_wake_disconnect_wakeup() argument
415 unix_dgram_peer_wake_disconnect(sk, other); in unix_dgram_peer_wake_disconnect_wakeup()
416 wake_up_interruptible_poll(sk_sleep(sk), in unix_dgram_peer_wake_disconnect_wakeup()
426 static int unix_dgram_peer_wake_me(struct sock *sk, struct sock *other) in unix_dgram_peer_wake_me() argument
430 connected = unix_dgram_peer_wake_connect(sk, other); in unix_dgram_peer_wake_me()
436 unix_dgram_peer_wake_disconnect(sk, other); in unix_dgram_peer_wake_me()
441 static int unix_writable(const struct sock *sk) in unix_writable() argument
443 return sk->sk_state != TCP_LISTEN && in unix_writable()
444 (atomic_read(&sk->sk_wmem_alloc) << 2) <= sk->sk_sndbuf; in unix_writable()
447 static void unix_write_space(struct sock *sk) in unix_write_space() argument
452 if (unix_writable(sk)) { in unix_write_space()
453 wq = rcu_dereference(sk->sk_wq); in unix_write_space()
457 sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); in unix_write_space()
466 static void unix_dgram_disconnected(struct sock *sk, struct sock *other) in unix_dgram_disconnected() argument
468 if (!skb_queue_empty(&sk->sk_receive_queue)) { in unix_dgram_disconnected()
469 skb_queue_purge(&sk->sk_receive_queue); in unix_dgram_disconnected()
470 wake_up_interruptible_all(&unix_sk(sk)->peer_wait); in unix_dgram_disconnected()
476 if (!sock_flag(other, SOCK_DEAD) && unix_peer(other) == sk) { in unix_dgram_disconnected()
483 static void unix_sock_destructor(struct sock *sk) in unix_sock_destructor() argument
485 struct unix_sock *u = unix_sk(sk); in unix_sock_destructor()
487 skb_queue_purge(&sk->sk_receive_queue); in unix_sock_destructor()
489 WARN_ON(atomic_read(&sk->sk_wmem_alloc)); in unix_sock_destructor()
490 WARN_ON(!sk_unhashed(sk)); in unix_sock_destructor()
491 WARN_ON(sk->sk_socket); in unix_sock_destructor()
492 if (!sock_flag(sk, SOCK_DEAD)) { in unix_sock_destructor()
493 pr_info("Attempt to release alive unix socket: %p\n", sk); in unix_sock_destructor()
502 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); in unix_sock_destructor()
505 pr_debug("UNIX %p is destroyed, %ld are still alive.\n", sk, in unix_sock_destructor()
510 static void unix_release_sock(struct sock *sk, int embrion) in unix_release_sock() argument
512 struct unix_sock *u = unix_sk(sk); in unix_release_sock()
518 unix_remove_socket(sk); in unix_release_sock()
521 unix_state_lock(sk); in unix_release_sock()
522 sock_orphan(sk); in unix_release_sock()
523 sk->sk_shutdown = SHUTDOWN_MASK; in unix_release_sock()
527 state = sk->sk_state; in unix_release_sock()
528 sk->sk_state = TCP_CLOSE; in unix_release_sock()
529 unix_state_unlock(sk); in unix_release_sock()
533 skpair = unix_peer(sk); in unix_release_sock()
536 if (sk->sk_type == SOCK_STREAM || sk->sk_type == SOCK_SEQPACKET) { in unix_release_sock()
540 if (!skb_queue_empty(&sk->sk_receive_queue) || embrion) in unix_release_sock()
547 unix_dgram_peer_wake_disconnect(sk, skpair); in unix_release_sock()
549 unix_peer(sk) = NULL; in unix_release_sock()
554 while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { in unix_release_sock()
556 unix_release_sock(skb->sk, 1); in unix_release_sock()
565 sock_put(sk); in unix_release_sock()
584 static void init_peercred(struct sock *sk) in init_peercred() argument
586 put_pid(sk->sk_peer_pid); in init_peercred()
587 if (sk->sk_peer_cred) in init_peercred()
588 put_cred(sk->sk_peer_cred); in init_peercred()
589 sk->sk_peer_pid = get_pid(task_tgid(current)); in init_peercred()
590 sk->sk_peer_cred = get_current_cred(); in init_peercred()
593 static void copy_peercred(struct sock *sk, struct sock *peersk) in copy_peercred() argument
595 put_pid(sk->sk_peer_pid); in copy_peercred()
596 if (sk->sk_peer_cred) in copy_peercred()
597 put_cred(sk->sk_peer_cred); in copy_peercred()
598 sk->sk_peer_pid = get_pid(peersk->sk_peer_pid); in copy_peercred()
599 sk->sk_peer_cred = get_cred(peersk->sk_peer_cred); in copy_peercred()
605 struct sock *sk = sock->sk; in unix_listen() local
606 struct unix_sock *u = unix_sk(sk); in unix_listen()
615 unix_state_lock(sk); in unix_listen()
616 if (sk->sk_state != TCP_CLOSE && sk->sk_state != TCP_LISTEN) in unix_listen()
618 if (backlog > sk->sk_max_ack_backlog) in unix_listen()
620 sk->sk_max_ack_backlog = backlog; in unix_listen()
621 sk->sk_state = TCP_LISTEN; in unix_listen()
623 init_peercred(sk); in unix_listen()
627 unix_state_unlock(sk); in unix_listen()
660 static int unix_set_peek_off(struct sock *sk, int val) in unix_set_peek_off() argument
662 struct unix_sock *u = unix_sk(sk); in unix_set_peek_off()
667 sk->sk_peek_off = val; in unix_set_peek_off()
757 struct sock *sk = NULL; in unix_create1() local
764 sk = sk_alloc(net, PF_UNIX, GFP_KERNEL, &unix_proto, kern); in unix_create1()
765 if (!sk) in unix_create1()
768 sock_init_data(sock, sk); in unix_create1()
769 lockdep_set_class(&sk->sk_receive_queue.lock, in unix_create1()
772 sk->sk_write_space = unix_write_space; in unix_create1()
773 sk->sk_max_ack_backlog = net->unx.sysctl_max_dgram_qlen; in unix_create1()
774 sk->sk_destruct = unix_sock_destructor; in unix_create1()
775 u = unix_sk(sk); in unix_create1()
784 unix_insert_socket(unix_sockets_unbound(sk), sk); in unix_create1()
786 if (sk == NULL) in unix_create1()
790 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); in unix_create1()
793 return sk; in unix_create1()
829 struct sock *sk = sock->sk; in unix_release() local
831 if (!sk) in unix_release()
834 unix_release_sock(sk, 0); in unix_release()
835 sock->sk = NULL; in unix_release()
842 struct sock *sk = sock->sk; in unix_autobind() local
843 struct net *net = sock_net(sk); in unix_autobind()
844 struct unix_sock *u = unix_sk(sk); in unix_autobind()
889 addr->hash ^= sk->sk_type; in unix_autobind()
891 __unix_remove_socket(sk); in unix_autobind()
893 __unix_insert_socket(&unix_socket_table[addr->hash], sk); in unix_autobind()
975 struct sock *sk = sock->sk; in unix_bind() local
976 struct net *net = sock_net(sk); in unix_bind()
977 struct unix_sock *u = unix_sk(sk); in unix_bind()
1036 addr->hash = hash ^ sk->sk_type; in unix_bind()
1059 sk->sk_type, hash)) { in unix_bind()
1068 __unix_remove_socket(sk); in unix_bind()
1070 __unix_insert_socket(list, sk); in unix_bind()
1112 struct sock *sk = sock->sk; in unix_dgram_connect() local
1113 struct net *net = sock_net(sk); in unix_dgram_connect()
1126 !unix_sk(sk)->addr && (err = unix_autobind(sock)) != 0) in unix_dgram_connect()
1134 unix_state_double_lock(sk, other); in unix_dgram_connect()
1138 unix_state_double_unlock(sk, other); in unix_dgram_connect()
1144 if (!unix_may_send(sk, other)) in unix_dgram_connect()
1147 err = security_unix_may_send(sk->sk_socket, other->sk_socket); in unix_dgram_connect()
1156 unix_state_double_lock(sk, other); in unix_dgram_connect()
1162 if (unix_peer(sk)) { in unix_dgram_connect()
1163 struct sock *old_peer = unix_peer(sk); in unix_dgram_connect()
1164 unix_peer(sk) = other; in unix_dgram_connect()
1165 unix_dgram_peer_wake_disconnect_wakeup(sk, old_peer); in unix_dgram_connect()
1167 unix_state_double_unlock(sk, other); in unix_dgram_connect()
1170 unix_dgram_disconnected(sk, old_peer); in unix_dgram_connect()
1173 unix_peer(sk) = other; in unix_dgram_connect()
1174 unix_state_double_unlock(sk, other); in unix_dgram_connect()
1179 unix_state_double_unlock(sk, other); in unix_dgram_connect()
1210 struct sock *sk = sock->sk; in unix_stream_connect() local
1211 struct net *net = sock_net(sk); in unix_stream_connect()
1212 struct unix_sock *u = unix_sk(sk), *newu, *otheru; in unix_stream_connect()
1230 timeo = sock_sndtimeo(sk, flags & O_NONBLOCK); in unix_stream_connect()
1240 newsk = unix_create1(sock_net(sk), NULL, 0); in unix_stream_connect()
1251 other = unix_find_other(net, sunaddr, addr_len, sk->sk_type, hash, &err); in unix_stream_connect()
1296 st = sk->sk_state; in unix_stream_connect()
1311 unix_state_lock_nested(sk); in unix_stream_connect()
1313 if (sk->sk_state != st) { in unix_stream_connect()
1314 unix_state_unlock(sk); in unix_stream_connect()
1320 err = security_unix_stream_connect(sk, other, newsk); in unix_stream_connect()
1322 unix_state_unlock(sk); in unix_stream_connect()
1328 sock_hold(sk); in unix_stream_connect()
1329 unix_peer(newsk) = sk; in unix_stream_connect()
1331 newsk->sk_type = sk->sk_type; in unix_stream_connect()
1348 copy_peercred(sk, other); in unix_stream_connect()
1351 sk->sk_state = TCP_ESTABLISHED; in unix_stream_connect()
1355 unix_peer(sk) = newsk; in unix_stream_connect()
1357 unix_state_unlock(sk); in unix_stream_connect()
1383 struct sock *ska = socka->sk, *skb = sockb->sk; in unix_socketpair()
1413 struct sock *sk = sock->sk; in unix_accept() local
1423 if (sk->sk_state != TCP_LISTEN) in unix_accept()
1430 skb = skb_recv_datagram(sk, 0, flags&O_NONBLOCK, &err); in unix_accept()
1438 tsk = skb->sk; in unix_accept()
1439 skb_free_datagram(sk, skb); in unix_accept()
1440 wake_up_interruptible(&unix_sk(sk)->peer_wait); in unix_accept()
1457 struct sock *sk = sock->sk; in unix_getname() local
1463 sk = unix_peer_get(sk); in unix_getname()
1466 if (!sk) in unix_getname()
1470 sock_hold(sk); in unix_getname()
1473 u = unix_sk(sk); in unix_getname()
1474 unix_state_lock(sk); in unix_getname()
1485 unix_state_unlock(sk); in unix_getname()
1486 sock_put(sk); in unix_getname()
1543 struct sock *sk = unix_get_socket(scm->fp->fp[i]); in unix_attach_fds() local
1545 if (sk) { in unix_attach_fds()
1548 unix_sk(sk)->recursion_level); in unix_attach_fds()
1644 struct sock *sk = sock->sk; in unix_dgram_sendmsg() local
1645 struct net *net = sock_net(sk); in unix_dgram_sendmsg()
1646 struct unix_sock *u = unix_sk(sk); in unix_dgram_sendmsg()
1676 other = unix_peer_get(sk); in unix_dgram_sendmsg()
1686 if (len > sk->sk_sndbuf - 32) in unix_dgram_sendmsg()
1698 skb = sock_alloc_send_pskb(sk, len - data_len, data_len, in unix_dgram_sendmsg()
1716 timeo = sock_sndtimeo(sk, msg->msg_flags & MSG_DONTWAIT); in unix_dgram_sendmsg()
1724 other = unix_find_other(net, sunaddr, namelen, sk->sk_type, in unix_dgram_sendmsg()
1740 if (!unix_may_send(sk, other)) in unix_dgram_sendmsg()
1752 unix_state_lock(sk); in unix_dgram_sendmsg()
1755 if (unix_peer(sk) == other) { in unix_dgram_sendmsg()
1756 unix_peer(sk) = NULL; in unix_dgram_sendmsg()
1757 unix_dgram_peer_wake_disconnect_wakeup(sk, other); in unix_dgram_sendmsg()
1759 unix_state_unlock(sk); in unix_dgram_sendmsg()
1761 unix_dgram_disconnected(sk, other); in unix_dgram_sendmsg()
1765 unix_state_unlock(sk); in unix_dgram_sendmsg()
1778 if (sk->sk_type != SOCK_SEQPACKET) { in unix_dgram_sendmsg()
1779 err = security_unix_may_send(sk->sk_socket, other->sk_socket); in unix_dgram_sendmsg()
1788 if (other != sk && in unix_dgram_sendmsg()
1789 unlikely(unix_peer(other) != sk && unix_recvq_full(other))) { in unix_dgram_sendmsg()
1802 unix_state_double_lock(sk, other); in unix_dgram_sendmsg()
1805 if (unix_peer(sk) != other || in unix_dgram_sendmsg()
1806 unix_dgram_peer_wake_me(sk, other)) { in unix_dgram_sendmsg()
1819 unix_state_unlock(sk); in unix_dgram_sendmsg()
1835 unix_state_unlock(sk); in unix_dgram_sendmsg()
1854 struct sock *sk = sock->sk; in unix_stream_sendmsg() local
1874 err = sk->sk_state == TCP_ESTABLISHED ? -EISCONN : -EOPNOTSUPP; in unix_stream_sendmsg()
1878 other = unix_peer(sk); in unix_stream_sendmsg()
1883 if (sk->sk_shutdown & SEND_SHUTDOWN) in unix_stream_sendmsg()
1890 size = min_t(int, size, (sk->sk_sndbuf >> 1) - 64); in unix_stream_sendmsg()
1899 skb = sock_alloc_send_pskb(sk, size - data_len, data_len, in unix_stream_sendmsg()
1961 struct sock *other, *sk = socket->sk; in unix_stream_sendpage() local
1967 other = unix_peer(sk); in unix_stream_sendpage()
1968 if (!other || sk->sk_state != TCP_ESTABLISHED) in unix_stream_sendpage()
1975 newskb = sock_alloc_send_pskb(sk, 0, 0, flags & MSG_DONTWAIT, in unix_stream_sendpage()
1990 if (sk->sk_shutdown & SEND_SHUTDOWN) { in unix_stream_sendpage()
2039 atomic_add(size, &sk->sk_wmem_alloc); in unix_stream_sendpage()
2074 struct sock *sk = sock->sk; in unix_seqpacket_sendmsg() local
2076 err = sock_error(sk); in unix_seqpacket_sendmsg()
2080 if (sk->sk_state != TCP_ESTABLISHED) in unix_seqpacket_sendmsg()
2092 struct sock *sk = sock->sk; in unix_seqpacket_recvmsg() local
2094 if (sk->sk_state != TCP_ESTABLISHED) in unix_seqpacket_recvmsg()
2100 static void unix_copy_addr(struct msghdr *msg, struct sock *sk) in unix_copy_addr() argument
2102 struct unix_sock *u = unix_sk(sk); in unix_copy_addr()
2114 struct sock *sk = sock->sk; in unix_dgram_recvmsg() local
2115 struct unix_sock *u = unix_sk(sk); in unix_dgram_recvmsg()
2134 skip = sk_peek_offset(sk, flags); in unix_dgram_recvmsg()
2136 skb = __skb_recv_datagram(sk, flags, &peeked, &skip, &err); in unix_dgram_recvmsg()
2138 unix_state_lock(sk); in unix_dgram_recvmsg()
2140 if (sk->sk_type == SOCK_SEQPACKET && err == -EAGAIN && in unix_dgram_recvmsg()
2141 (sk->sk_shutdown & RCV_SHUTDOWN)) in unix_dgram_recvmsg()
2143 unix_state_unlock(sk); in unix_dgram_recvmsg()
2151 unix_copy_addr(msg, skb->sk); in unix_dgram_recvmsg()
2162 if (sock_flag(sk, SOCK_RCVTSTAMP)) in unix_dgram_recvmsg()
2163 __sock_recv_timestamp(msg, sk, skb); in unix_dgram_recvmsg()
2174 sk_peek_offset_bwd(sk, skb->len); in unix_dgram_recvmsg()
2189 sk_peek_offset_fwd(sk, size); in unix_dgram_recvmsg()
2199 skb_free_datagram(sk, skb); in unix_dgram_recvmsg()
2209 static long unix_stream_data_wait(struct sock *sk, long timeo, in unix_stream_data_wait() argument
2215 unix_state_lock(sk); in unix_stream_data_wait()
2218 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in unix_stream_data_wait()
2220 tail = skb_peek_tail(&sk->sk_receive_queue); in unix_stream_data_wait()
2223 sk->sk_err || in unix_stream_data_wait()
2224 (sk->sk_shutdown & RCV_SHUTDOWN) || in unix_stream_data_wait()
2229 sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk); in unix_stream_data_wait()
2230 unix_state_unlock(sk); in unix_stream_data_wait()
2232 unix_state_lock(sk); in unix_stream_data_wait()
2234 if (sock_flag(sk, SOCK_DEAD)) in unix_stream_data_wait()
2237 sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk); in unix_stream_data_wait()
2240 finish_wait(sk_sleep(sk), &wait); in unix_stream_data_wait()
2241 unix_state_unlock(sk); in unix_stream_data_wait()
2265 struct sock *sk = sock->sk; in unix_stream_read_generic() local
2266 struct unix_sock *u = unix_sk(sk); in unix_stream_read_generic()
2278 if (unlikely(sk->sk_state != TCP_ESTABLISHED)) { in unix_stream_read_generic()
2288 target = sock_rcvlowat(sk, flags & MSG_WAITALL, size); in unix_stream_read_generic()
2289 timeo = sock_rcvtimeo(sk, noblock); in unix_stream_read_generic()
2299 skip = sk_peek_offset(sk, flags); in unix_stream_read_generic()
2308 unix_state_lock(sk); in unix_stream_read_generic()
2309 if (sock_flag(sk, SOCK_DEAD)) { in unix_stream_read_generic()
2313 last = skb = skb_peek(&sk->sk_receive_queue); in unix_stream_read_generic()
2317 unix_sk(sk)->recursion_level = 0; in unix_stream_read_generic()
2325 err = sock_error(sk); in unix_stream_read_generic()
2328 if (sk->sk_shutdown & RCV_SHUTDOWN) in unix_stream_read_generic()
2331 unix_state_unlock(sk); in unix_stream_read_generic()
2339 timeo = unix_stream_data_wait(sk, timeo, last, in unix_stream_read_generic()
2351 unix_state_unlock(sk); in unix_stream_read_generic()
2359 skb = skb_peek_next(skb, &sk->sk_receive_queue); in unix_stream_read_generic()
2364 unix_state_unlock(sk); in unix_stream_read_generic()
2381 unix_copy_addr(state->msg, skb->sk); in unix_stream_read_generic()
2415 sk_peek_offset_bwd(sk, chunk); in unix_stream_read_generic()
2423 skb_unlink(skb, &sk->sk_receive_queue); in unix_stream_read_generic()
2434 sk_peek_offset_fwd(sk, chunk); in unix_stream_read_generic()
2442 unix_state_lock(sk); in unix_stream_read_generic()
2443 skb = skb_peek_next(skb, &sk->sk_receive_queue); in unix_stream_read_generic()
2446 unix_state_unlock(sk); in unix_stream_read_generic()
2485 static ssize_t skb_unix_socket_splice(struct sock *sk, in skb_unix_socket_splice() argument
2490 struct unix_sock *u = unix_sk(sk); in skb_unix_socket_splice()
2503 return skb_splice_bits(skb, state->socket->sk, in unix_stream_splice_actor()
2533 struct sock *sk = sock->sk; in unix_shutdown() local
2545 unix_state_lock(sk); in unix_shutdown()
2546 sk->sk_shutdown |= mode; in unix_shutdown()
2547 other = unix_peer(sk); in unix_shutdown()
2550 unix_state_unlock(sk); in unix_shutdown()
2551 sk->sk_state_change(sk); in unix_shutdown()
2554 (sk->sk_type == SOCK_STREAM || sk->sk_type == SOCK_SEQPACKET)) { in unix_shutdown()
2577 long unix_inq_len(struct sock *sk) in unix_inq_len() argument
2582 if (sk->sk_state == TCP_LISTEN) in unix_inq_len()
2585 spin_lock(&sk->sk_receive_queue.lock); in unix_inq_len()
2586 if (sk->sk_type == SOCK_STREAM || in unix_inq_len()
2587 sk->sk_type == SOCK_SEQPACKET) { in unix_inq_len()
2588 skb_queue_walk(&sk->sk_receive_queue, skb) in unix_inq_len()
2591 skb = skb_peek(&sk->sk_receive_queue); in unix_inq_len()
2595 spin_unlock(&sk->sk_receive_queue.lock); in unix_inq_len()
2601 long unix_outq_len(struct sock *sk) in unix_outq_len() argument
2603 return sk_wmem_alloc_get(sk); in unix_outq_len()
2609 struct sock *sk = sock->sk; in unix_ioctl() local
2615 amount = unix_outq_len(sk); in unix_ioctl()
2619 amount = unix_inq_len(sk); in unix_ioctl()
2634 struct sock *sk = sock->sk; in unix_poll() local
2637 sock_poll_wait(file, sk_sleep(sk), wait); in unix_poll()
2641 if (sk->sk_err) in unix_poll()
2643 if (sk->sk_shutdown == SHUTDOWN_MASK) in unix_poll()
2645 if (sk->sk_shutdown & RCV_SHUTDOWN) in unix_poll()
2649 if (!skb_queue_empty(&sk->sk_receive_queue)) in unix_poll()
2653 if ((sk->sk_type == SOCK_STREAM || sk->sk_type == SOCK_SEQPACKET) && in unix_poll()
2654 sk->sk_state == TCP_CLOSE) in unix_poll()
2661 if (unix_writable(sk)) in unix_poll()
2670 struct sock *sk = sock->sk, *other; in unix_dgram_poll() local
2673 sock_poll_wait(file, sk_sleep(sk), wait); in unix_dgram_poll()
2677 if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue)) in unix_dgram_poll()
2679 (sock_flag(sk, SOCK_SELECT_ERR_QUEUE) ? POLLPRI : 0); in unix_dgram_poll()
2681 if (sk->sk_shutdown & RCV_SHUTDOWN) in unix_dgram_poll()
2683 if (sk->sk_shutdown == SHUTDOWN_MASK) in unix_dgram_poll()
2687 if (!skb_queue_empty(&sk->sk_receive_queue)) in unix_dgram_poll()
2691 if (sk->sk_type == SOCK_SEQPACKET) { in unix_dgram_poll()
2692 if (sk->sk_state == TCP_CLOSE) in unix_dgram_poll()
2695 if (sk->sk_state == TCP_SYN_SENT) in unix_dgram_poll()
2703 writable = unix_writable(sk); in unix_dgram_poll()
2705 unix_state_lock(sk); in unix_dgram_poll()
2707 other = unix_peer(sk); in unix_dgram_poll()
2708 if (other && unix_peer(other) != sk && in unix_dgram_poll()
2710 unix_dgram_peer_wake_me(sk, other)) in unix_dgram_poll()
2713 unix_state_unlock(sk); in unix_dgram_poll()
2719 sk_set_bit(SOCKWQ_ASYNC_NOSPACE, sk); in unix_dgram_poll()
2736 struct sock *sk; in unix_from_bucket() local
2739 for (sk = sk_head(&unix_socket_table[bucket]); sk; sk = sk_next(sk)) { in unix_from_bucket()
2740 if (sock_net(sk) != seq_file_net(seq)) in unix_from_bucket()
2746 return sk; in unix_from_bucket()
2750 struct sock *sk, in unix_next_socket() argument
2755 while (sk > (struct sock *)SEQ_START_TOKEN) { in unix_next_socket()
2756 sk = sk_next(sk); in unix_next_socket()
2757 if (!sk) in unix_next_socket()
2759 if (sock_net(sk) == seq_file_net(seq)) in unix_next_socket()
2760 return sk; in unix_next_socket()
2764 sk = unix_from_bucket(seq, pos); in unix_next_socket()
2765 if (sk) in unix_next_socket()
2766 return sk; in unix_next_socket()