Lines Matching refs:sk
138 #define UNIX_ABSTRACT(sk) (unix_sk(sk)->addr->hash < UNIX_HASH_SIZE) argument
172 #define unix_peer(sk) (unix_sk(sk)->peer) argument
174 static inline int unix_our_peer(struct sock *sk, struct sock *osk) in unix_our_peer() argument
176 return unix_peer(osk) == sk; in unix_our_peer()
179 static inline int unix_may_send(struct sock *sk, struct sock *osk) in unix_may_send() argument
181 return unix_peer(osk) == NULL || unix_our_peer(sk, osk); in unix_may_send()
184 static inline int unix_recvq_full(struct sock const *sk) in unix_recvq_full() argument
186 return skb_queue_len(&sk->sk_receive_queue) > sk->sk_max_ack_backlog; in unix_recvq_full()
238 static void __unix_remove_socket(struct sock *sk) in __unix_remove_socket() argument
240 sk_del_node_init(sk); in __unix_remove_socket()
243 static void __unix_insert_socket(struct hlist_head *list, struct sock *sk) in __unix_insert_socket() argument
245 WARN_ON(!sk_unhashed(sk)); in __unix_insert_socket()
246 sk_add_node(sk, list); in __unix_insert_socket()
249 static inline void unix_remove_socket(struct sock *sk) in unix_remove_socket() argument
252 __unix_remove_socket(sk); in unix_remove_socket()
256 static inline void unix_insert_socket(struct hlist_head *list, struct sock *sk) in unix_insert_socket() argument
259 __unix_insert_socket(list, sk); in unix_insert_socket()
357 u_sleep = sk_sleep(&u->sk); in unix_dgram_peer_wake_relay()
364 static int unix_dgram_peer_wake_connect(struct sock *sk, struct sock *other) in unix_dgram_peer_wake_connect() argument
369 u = unix_sk(sk); in unix_dgram_peer_wake_connect()
385 static void unix_dgram_peer_wake_disconnect(struct sock *sk, in unix_dgram_peer_wake_disconnect() argument
390 u = unix_sk(sk); in unix_dgram_peer_wake_disconnect()
402 static void unix_dgram_peer_wake_disconnect_wakeup(struct sock *sk, in unix_dgram_peer_wake_disconnect_wakeup() argument
405 unix_dgram_peer_wake_disconnect(sk, other); in unix_dgram_peer_wake_disconnect_wakeup()
406 wake_up_interruptible_poll(sk_sleep(sk), in unix_dgram_peer_wake_disconnect_wakeup()
416 static int unix_dgram_peer_wake_me(struct sock *sk, struct sock *other) in unix_dgram_peer_wake_me() argument
420 connected = unix_dgram_peer_wake_connect(sk, other); in unix_dgram_peer_wake_me()
426 unix_dgram_peer_wake_disconnect(sk, other); in unix_dgram_peer_wake_me()
431 static inline int unix_writable(struct sock *sk) in unix_writable() argument
433 return (atomic_read(&sk->sk_wmem_alloc) << 2) <= sk->sk_sndbuf; in unix_writable()
436 static void unix_write_space(struct sock *sk) in unix_write_space() argument
441 if (unix_writable(sk)) { in unix_write_space()
442 wq = rcu_dereference(sk->sk_wq); in unix_write_space()
446 sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); in unix_write_space()
455 static void unix_dgram_disconnected(struct sock *sk, struct sock *other) in unix_dgram_disconnected() argument
457 if (!skb_queue_empty(&sk->sk_receive_queue)) { in unix_dgram_disconnected()
458 skb_queue_purge(&sk->sk_receive_queue); in unix_dgram_disconnected()
459 wake_up_interruptible_all(&unix_sk(sk)->peer_wait); in unix_dgram_disconnected()
465 if (!sock_flag(other, SOCK_DEAD) && unix_peer(other) == sk) { in unix_dgram_disconnected()
472 static void unix_sock_destructor(struct sock *sk) in unix_sock_destructor() argument
474 struct unix_sock *u = unix_sk(sk); in unix_sock_destructor()
476 skb_queue_purge(&sk->sk_receive_queue); in unix_sock_destructor()
478 WARN_ON(atomic_read(&sk->sk_wmem_alloc)); in unix_sock_destructor()
479 WARN_ON(!sk_unhashed(sk)); in unix_sock_destructor()
480 WARN_ON(sk->sk_socket); in unix_sock_destructor()
481 if (!sock_flag(sk, SOCK_DEAD)) { in unix_sock_destructor()
482 pr_info("Attempt to release alive unix socket: %p\n", sk); in unix_sock_destructor()
491 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); in unix_sock_destructor()
494 pr_debug("UNIX %p is destroyed, %ld are still alive.\n", sk, in unix_sock_destructor()
499 static void unix_release_sock(struct sock *sk, int embrion) in unix_release_sock() argument
501 struct unix_sock *u = unix_sk(sk); in unix_release_sock()
507 unix_remove_socket(sk); in unix_release_sock()
510 unix_state_lock(sk); in unix_release_sock()
511 sock_orphan(sk); in unix_release_sock()
512 sk->sk_shutdown = SHUTDOWN_MASK; in unix_release_sock()
516 state = sk->sk_state; in unix_release_sock()
517 sk->sk_state = TCP_CLOSE; in unix_release_sock()
518 unix_state_unlock(sk); in unix_release_sock()
522 skpair = unix_peer(sk); in unix_release_sock()
525 if (sk->sk_type == SOCK_STREAM || sk->sk_type == SOCK_SEQPACKET) { in unix_release_sock()
529 if (!skb_queue_empty(&sk->sk_receive_queue) || embrion) in unix_release_sock()
536 unix_dgram_peer_wake_disconnect(sk, skpair); in unix_release_sock()
538 unix_peer(sk) = NULL; in unix_release_sock()
543 while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { in unix_release_sock()
545 unix_release_sock(skb->sk, 1); in unix_release_sock()
553 sock_put(sk); in unix_release_sock()
572 static void init_peercred(struct sock *sk) in init_peercred() argument
574 put_pid(sk->sk_peer_pid); in init_peercred()
575 if (sk->sk_peer_cred) in init_peercred()
576 put_cred(sk->sk_peer_cred); in init_peercred()
577 sk->sk_peer_pid = get_pid(task_tgid(current)); in init_peercred()
578 sk->sk_peer_cred = get_current_cred(); in init_peercred()
581 static void copy_peercred(struct sock *sk, struct sock *peersk) in copy_peercred() argument
583 put_pid(sk->sk_peer_pid); in copy_peercred()
584 if (sk->sk_peer_cred) in copy_peercred()
585 put_cred(sk->sk_peer_cred); in copy_peercred()
586 sk->sk_peer_pid = get_pid(peersk->sk_peer_pid); in copy_peercred()
587 sk->sk_peer_cred = get_cred(peersk->sk_peer_cred); in copy_peercred()
593 struct sock *sk = sock->sk; in unix_listen() local
594 struct unix_sock *u = unix_sk(sk); in unix_listen()
603 unix_state_lock(sk); in unix_listen()
604 if (sk->sk_state != TCP_CLOSE && sk->sk_state != TCP_LISTEN) in unix_listen()
606 if (backlog > sk->sk_max_ack_backlog) in unix_listen()
608 sk->sk_max_ack_backlog = backlog; in unix_listen()
609 sk->sk_state = TCP_LISTEN; in unix_listen()
611 init_peercred(sk); in unix_listen()
615 unix_state_unlock(sk); in unix_listen()
643 static int unix_set_peek_off(struct sock *sk, int val) in unix_set_peek_off() argument
645 struct unix_sock *u = unix_sk(sk); in unix_set_peek_off()
650 sk->sk_peek_off = val; in unix_set_peek_off()
739 struct sock *sk = NULL; in unix_create1() local
746 sk = sk_alloc(net, PF_UNIX, GFP_KERNEL, &unix_proto); in unix_create1()
747 if (!sk) in unix_create1()
750 sock_init_data(sock, sk); in unix_create1()
751 lockdep_set_class(&sk->sk_receive_queue.lock, in unix_create1()
754 sk->sk_write_space = unix_write_space; in unix_create1()
755 sk->sk_max_ack_backlog = net->unx.sysctl_max_dgram_qlen; in unix_create1()
756 sk->sk_destruct = unix_sock_destructor; in unix_create1()
757 u = unix_sk(sk); in unix_create1()
766 unix_insert_socket(unix_sockets_unbound(sk), sk); in unix_create1()
768 if (sk == NULL) in unix_create1()
772 sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); in unix_create1()
775 return sk; in unix_create1()
811 struct sock *sk = sock->sk; in unix_release() local
813 if (!sk) in unix_release()
816 unix_release_sock(sk, 0); in unix_release()
817 sock->sk = NULL; in unix_release()
824 struct sock *sk = sock->sk; in unix_autobind() local
825 struct net *net = sock_net(sk); in unix_autobind()
826 struct unix_sock *u = unix_sk(sk); in unix_autobind()
871 addr->hash ^= sk->sk_type; in unix_autobind()
873 __unix_remove_socket(sk); in unix_autobind()
875 __unix_insert_socket(&unix_socket_table[addr->hash], sk); in unix_autobind()
969 struct sock *sk = sock->sk; in unix_bind() local
970 struct net *net = sock_net(sk); in unix_bind()
971 struct unix_sock *u = unix_sk(sk); in unix_bind()
1008 addr->hash = hash ^ sk->sk_type; in unix_bind()
1031 sk->sk_type, hash)) { in unix_bind()
1040 __unix_remove_socket(sk); in unix_bind()
1042 __unix_insert_socket(list, sk); in unix_bind()
1080 struct sock *sk = sock->sk; in unix_dgram_connect() local
1081 struct net *net = sock_net(sk); in unix_dgram_connect()
1094 !unix_sk(sk)->addr && (err = unix_autobind(sock)) != 0) in unix_dgram_connect()
1102 unix_state_double_lock(sk, other); in unix_dgram_connect()
1106 unix_state_double_unlock(sk, other); in unix_dgram_connect()
1112 if (!unix_may_send(sk, other)) in unix_dgram_connect()
1115 err = security_unix_may_send(sk->sk_socket, other->sk_socket); in unix_dgram_connect()
1124 unix_state_double_lock(sk, other); in unix_dgram_connect()
1130 if (unix_peer(sk)) { in unix_dgram_connect()
1131 struct sock *old_peer = unix_peer(sk); in unix_dgram_connect()
1132 unix_peer(sk) = other; in unix_dgram_connect()
1133 unix_dgram_peer_wake_disconnect_wakeup(sk, old_peer); in unix_dgram_connect()
1135 unix_state_double_unlock(sk, other); in unix_dgram_connect()
1138 unix_dgram_disconnected(sk, old_peer); in unix_dgram_connect()
1141 unix_peer(sk) = other; in unix_dgram_connect()
1142 unix_state_double_unlock(sk, other); in unix_dgram_connect()
1147 unix_state_double_unlock(sk, other); in unix_dgram_connect()
1178 struct sock *sk = sock->sk; in unix_stream_connect() local
1179 struct net *net = sock_net(sk); in unix_stream_connect()
1180 struct unix_sock *u = unix_sk(sk), *newu, *otheru; in unix_stream_connect()
1198 timeo = sock_sndtimeo(sk, flags & O_NONBLOCK); in unix_stream_connect()
1208 newsk = unix_create1(sock_net(sk), NULL); in unix_stream_connect()
1219 other = unix_find_other(net, sunaddr, addr_len, sk->sk_type, hash, &err); in unix_stream_connect()
1264 st = sk->sk_state; in unix_stream_connect()
1279 unix_state_lock_nested(sk); in unix_stream_connect()
1281 if (sk->sk_state != st) { in unix_stream_connect()
1282 unix_state_unlock(sk); in unix_stream_connect()
1288 err = security_unix_stream_connect(sk, other, newsk); in unix_stream_connect()
1290 unix_state_unlock(sk); in unix_stream_connect()
1296 sock_hold(sk); in unix_stream_connect()
1297 unix_peer(newsk) = sk; in unix_stream_connect()
1299 newsk->sk_type = sk->sk_type; in unix_stream_connect()
1316 copy_peercred(sk, other); in unix_stream_connect()
1319 sk->sk_state = TCP_ESTABLISHED; in unix_stream_connect()
1323 unix_peer(sk) = newsk; in unix_stream_connect()
1325 unix_state_unlock(sk); in unix_stream_connect()
1351 struct sock *ska = socka->sk, *skb = sockb->sk; in unix_socketpair()
1381 struct sock *sk = sock->sk; in unix_accept() local
1391 if (sk->sk_state != TCP_LISTEN) in unix_accept()
1398 skb = skb_recv_datagram(sk, 0, flags&O_NONBLOCK, &err); in unix_accept()
1406 tsk = skb->sk; in unix_accept()
1407 skb_free_datagram(sk, skb); in unix_accept()
1408 wake_up_interruptible(&unix_sk(sk)->peer_wait); in unix_accept()
1425 struct sock *sk = sock->sk; in unix_getname() local
1431 sk = unix_peer_get(sk); in unix_getname()
1434 if (!sk) in unix_getname()
1438 sock_hold(sk); in unix_getname()
1441 u = unix_sk(sk); in unix_getname()
1442 unix_state_lock(sk); in unix_getname()
1453 unix_state_unlock(sk); in unix_getname()
1454 sock_put(sk); in unix_getname()
1511 struct sock *sk = unix_get_socket(scm->fp->fp[i]); in unix_attach_fds() local
1513 if (sk) { in unix_attach_fds()
1516 unix_sk(sk)->recursion_level); in unix_attach_fds()
1576 struct sock *sk = sock->sk; in unix_dgram_sendmsg() local
1577 struct net *net = sock_net(sk); in unix_dgram_sendmsg()
1578 struct unix_sock *u = unix_sk(sk); in unix_dgram_sendmsg()
1608 other = unix_peer_get(sk); in unix_dgram_sendmsg()
1618 if (len > sk->sk_sndbuf - 32) in unix_dgram_sendmsg()
1630 skb = sock_alloc_send_pskb(sk, len - data_len, data_len, in unix_dgram_sendmsg()
1649 timeo = sock_sndtimeo(sk, msg->msg_flags & MSG_DONTWAIT); in unix_dgram_sendmsg()
1657 other = unix_find_other(net, sunaddr, namelen, sk->sk_type, in unix_dgram_sendmsg()
1673 if (!unix_may_send(sk, other)) in unix_dgram_sendmsg()
1685 unix_state_lock(sk); in unix_dgram_sendmsg()
1688 if (unix_peer(sk) == other) { in unix_dgram_sendmsg()
1689 unix_peer(sk) = NULL; in unix_dgram_sendmsg()
1690 unix_dgram_peer_wake_disconnect_wakeup(sk, other); in unix_dgram_sendmsg()
1692 unix_state_unlock(sk); in unix_dgram_sendmsg()
1694 unix_dgram_disconnected(sk, other); in unix_dgram_sendmsg()
1698 unix_state_unlock(sk); in unix_dgram_sendmsg()
1711 if (sk->sk_type != SOCK_SEQPACKET) { in unix_dgram_sendmsg()
1712 err = security_unix_may_send(sk->sk_socket, other->sk_socket); in unix_dgram_sendmsg()
1721 if (other != sk && in unix_dgram_sendmsg()
1722 unlikely(unix_peer(other) != sk && unix_recvq_full(other))) { in unix_dgram_sendmsg()
1735 unix_state_double_lock(sk, other); in unix_dgram_sendmsg()
1738 if (unix_peer(sk) != other || in unix_dgram_sendmsg()
1739 unix_dgram_peer_wake_me(sk, other)) { in unix_dgram_sendmsg()
1752 unix_state_unlock(sk); in unix_dgram_sendmsg()
1768 unix_state_unlock(sk); in unix_dgram_sendmsg()
1787 struct sock *sk = sock->sk; in unix_stream_sendmsg() local
1807 err = sk->sk_state == TCP_ESTABLISHED ? -EISCONN : -EOPNOTSUPP; in unix_stream_sendmsg()
1811 other = unix_peer(sk); in unix_stream_sendmsg()
1816 if (sk->sk_shutdown & SEND_SHUTDOWN) in unix_stream_sendmsg()
1823 size = min_t(int, size, (sk->sk_sndbuf >> 1) - 64); in unix_stream_sendmsg()
1832 skb = sock_alloc_send_pskb(sk, size - data_len, data_len, in unix_stream_sendmsg()
1891 struct sock *sk = sock->sk; in unix_seqpacket_sendmsg() local
1893 err = sock_error(sk); in unix_seqpacket_sendmsg()
1897 if (sk->sk_state != TCP_ESTABLISHED) in unix_seqpacket_sendmsg()
1909 struct sock *sk = sock->sk; in unix_seqpacket_recvmsg() local
1911 if (sk->sk_state != TCP_ESTABLISHED) in unix_seqpacket_recvmsg()
1917 static void unix_copy_addr(struct msghdr *msg, struct sock *sk) in unix_copy_addr() argument
1919 struct unix_sock *u = unix_sk(sk); in unix_copy_addr()
1931 struct sock *sk = sock->sk; in unix_dgram_recvmsg() local
1932 struct unix_sock *u = unix_sk(sk); in unix_dgram_recvmsg()
1951 skip = sk_peek_offset(sk, flags); in unix_dgram_recvmsg()
1953 skb = __skb_recv_datagram(sk, flags, &peeked, &skip, &err); in unix_dgram_recvmsg()
1955 unix_state_lock(sk); in unix_dgram_recvmsg()
1957 if (sk->sk_type == SOCK_SEQPACKET && err == -EAGAIN && in unix_dgram_recvmsg()
1958 (sk->sk_shutdown & RCV_SHUTDOWN)) in unix_dgram_recvmsg()
1960 unix_state_unlock(sk); in unix_dgram_recvmsg()
1968 unix_copy_addr(msg, skb->sk); in unix_dgram_recvmsg()
1979 if (sock_flag(sk, SOCK_RCVTSTAMP)) in unix_dgram_recvmsg()
1980 __sock_recv_timestamp(msg, sk, skb); in unix_dgram_recvmsg()
1991 sk_peek_offset_bwd(sk, skb->len); in unix_dgram_recvmsg()
2006 sk_peek_offset_fwd(sk, size); in unix_dgram_recvmsg()
2016 skb_free_datagram(sk, skb); in unix_dgram_recvmsg()
2026 static long unix_stream_data_wait(struct sock *sk, long timeo, in unix_stream_data_wait() argument
2031 unix_state_lock(sk); in unix_stream_data_wait()
2034 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in unix_stream_data_wait()
2036 if (skb_peek_tail(&sk->sk_receive_queue) != last || in unix_stream_data_wait()
2037 sk->sk_err || in unix_stream_data_wait()
2038 (sk->sk_shutdown & RCV_SHUTDOWN) || in unix_stream_data_wait()
2043 set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags); in unix_stream_data_wait()
2044 unix_state_unlock(sk); in unix_stream_data_wait()
2046 unix_state_lock(sk); in unix_stream_data_wait()
2048 if (sock_flag(sk, SOCK_DEAD)) in unix_stream_data_wait()
2051 clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags); in unix_stream_data_wait()
2054 finish_wait(sk_sleep(sk), &wait); in unix_stream_data_wait()
2055 unix_state_unlock(sk); in unix_stream_data_wait()
2068 struct sock *sk = sock->sk; in unix_stream_recvmsg() local
2069 struct unix_sock *u = unix_sk(sk); in unix_stream_recvmsg()
2080 if (sk->sk_state != TCP_ESTABLISHED) in unix_stream_recvmsg()
2087 target = sock_rcvlowat(sk, flags&MSG_WAITALL, size); in unix_stream_recvmsg()
2088 timeo = sock_rcvtimeo(sk, noblock); in unix_stream_recvmsg()
2099 skip = sk_peek_offset(sk, flags); in unix_stream_recvmsg()
2107 unix_state_lock(sk); in unix_stream_recvmsg()
2108 if (sock_flag(sk, SOCK_DEAD)) { in unix_stream_recvmsg()
2112 last = skb = skb_peek(&sk->sk_receive_queue); in unix_stream_recvmsg()
2115 unix_sk(sk)->recursion_level = 0; in unix_stream_recvmsg()
2123 err = sock_error(sk); in unix_stream_recvmsg()
2126 if (sk->sk_shutdown & RCV_SHUTDOWN) in unix_stream_recvmsg()
2129 unix_state_unlock(sk); in unix_stream_recvmsg()
2135 timeo = unix_stream_data_wait(sk, timeo, last); in unix_stream_recvmsg()
2146 unix_state_unlock(sk); in unix_stream_recvmsg()
2153 skb = skb_peek_next(skb, &sk->sk_receive_queue); in unix_stream_recvmsg()
2158 unix_state_unlock(sk); in unix_stream_recvmsg()
2174 unix_copy_addr(msg, skb->sk); in unix_stream_recvmsg()
2192 sk_peek_offset_bwd(sk, chunk); in unix_stream_recvmsg()
2200 skb_unlink(skb, &sk->sk_receive_queue); in unix_stream_recvmsg()
2211 sk_peek_offset_fwd(sk, chunk); in unix_stream_recvmsg()
2218 unix_state_lock(sk); in unix_stream_recvmsg()
2219 skb = skb_peek_next(skb, &sk->sk_receive_queue); in unix_stream_recvmsg()
2222 unix_state_unlock(sk); in unix_stream_recvmsg()
2235 struct sock *sk = sock->sk; in unix_shutdown() local
2247 unix_state_lock(sk); in unix_shutdown()
2248 sk->sk_shutdown |= mode; in unix_shutdown()
2249 other = unix_peer(sk); in unix_shutdown()
2252 unix_state_unlock(sk); in unix_shutdown()
2253 sk->sk_state_change(sk); in unix_shutdown()
2256 (sk->sk_type == SOCK_STREAM || sk->sk_type == SOCK_SEQPACKET)) { in unix_shutdown()
2279 long unix_inq_len(struct sock *sk) in unix_inq_len() argument
2284 if (sk->sk_state == TCP_LISTEN) in unix_inq_len()
2287 spin_lock(&sk->sk_receive_queue.lock); in unix_inq_len()
2288 if (sk->sk_type == SOCK_STREAM || in unix_inq_len()
2289 sk->sk_type == SOCK_SEQPACKET) { in unix_inq_len()
2290 skb_queue_walk(&sk->sk_receive_queue, skb) in unix_inq_len()
2293 skb = skb_peek(&sk->sk_receive_queue); in unix_inq_len()
2297 spin_unlock(&sk->sk_receive_queue.lock); in unix_inq_len()
2303 long unix_outq_len(struct sock *sk) in unix_outq_len() argument
2305 return sk_wmem_alloc_get(sk); in unix_outq_len()
2311 struct sock *sk = sock->sk; in unix_ioctl() local
2317 amount = unix_outq_len(sk); in unix_ioctl()
2321 amount = unix_inq_len(sk); in unix_ioctl()
2336 struct sock *sk = sock->sk; in unix_poll() local
2339 sock_poll_wait(file, sk_sleep(sk), wait); in unix_poll()
2343 if (sk->sk_err) in unix_poll()
2345 if (sk->sk_shutdown == SHUTDOWN_MASK) in unix_poll()
2347 if (sk->sk_shutdown & RCV_SHUTDOWN) in unix_poll()
2351 if (!skb_queue_empty(&sk->sk_receive_queue)) in unix_poll()
2355 if ((sk->sk_type == SOCK_STREAM || sk->sk_type == SOCK_SEQPACKET) && in unix_poll()
2356 sk->sk_state == TCP_CLOSE) in unix_poll()
2363 if (unix_writable(sk)) in unix_poll()
2372 struct sock *sk = sock->sk, *other; in unix_dgram_poll() local
2375 sock_poll_wait(file, sk_sleep(sk), wait); in unix_dgram_poll()
2379 if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue)) in unix_dgram_poll()
2381 (sock_flag(sk, SOCK_SELECT_ERR_QUEUE) ? POLLPRI : 0); in unix_dgram_poll()
2383 if (sk->sk_shutdown & RCV_SHUTDOWN) in unix_dgram_poll()
2385 if (sk->sk_shutdown == SHUTDOWN_MASK) in unix_dgram_poll()
2389 if (!skb_queue_empty(&sk->sk_receive_queue)) in unix_dgram_poll()
2393 if (sk->sk_type == SOCK_SEQPACKET) { in unix_dgram_poll()
2394 if (sk->sk_state == TCP_CLOSE) in unix_dgram_poll()
2397 if (sk->sk_state == TCP_SYN_SENT) in unix_dgram_poll()
2405 writable = unix_writable(sk); in unix_dgram_poll()
2407 unix_state_lock(sk); in unix_dgram_poll()
2409 other = unix_peer(sk); in unix_dgram_poll()
2410 if (other && unix_peer(other) != sk && in unix_dgram_poll()
2412 unix_dgram_peer_wake_me(sk, other)) in unix_dgram_poll()
2415 unix_state_unlock(sk); in unix_dgram_poll()
2421 set_bit(SOCK_ASYNC_NOSPACE, &sk->sk_socket->flags); in unix_dgram_poll()
2438 struct sock *sk; in unix_from_bucket() local
2441 for (sk = sk_head(&unix_socket_table[bucket]); sk; sk = sk_next(sk)) { in unix_from_bucket()
2442 if (sock_net(sk) != seq_file_net(seq)) in unix_from_bucket()
2448 return sk; in unix_from_bucket()
2452 struct sock *sk, in unix_next_socket() argument
2457 while (sk > (struct sock *)SEQ_START_TOKEN) { in unix_next_socket()
2458 sk = sk_next(sk); in unix_next_socket()
2459 if (!sk) in unix_next_socket()
2461 if (sock_net(sk) == seq_file_net(seq)) in unix_next_socket()
2462 return sk; in unix_next_socket()
2466 sk = unix_from_bucket(seq, pos); in unix_next_socket()
2467 if (sk) in unix_next_socket()
2468 return sk; in unix_next_socket()