protocol.c (40f56d0c7043d16e9d49d1df6c02804c09ed5cd6) protocol.c (5426a4ef6455c93e76a553eda0a1811bb0bbd214)
1// SPDX-License-Identifier: GPL-2.0
2/* Multipath TCP
3 *
4 * Copyright (c) 2017 - 2019, Intel Corporation.
5 */
6
7#define pr_fmt(fmt) "MPTCP: " fmt
8

--- 3830 unchanged lines hidden (view full) ---

3839 int state;
3840
3841 msk = mptcp_sk(sk);
3842 sock_poll_wait(file, sock, wait);
3843
3844 state = inet_sk_state_load(sk);
3845 pr_debug("msk=%p state=%d flags=%lx", msk, state, msk->flags);
3846 if (state == TCP_LISTEN) {
1// SPDX-License-Identifier: GPL-2.0
2/* Multipath TCP
3 *
4 * Copyright (c) 2017 - 2019, Intel Corporation.
5 */
6
7#define pr_fmt(fmt) "MPTCP: " fmt
8

--- 3830 unchanged lines hidden (view full) ---

3839 int state;
3840
3841 msk = mptcp_sk(sk);
3842 sock_poll_wait(file, sock, wait);
3843
3844 state = inet_sk_state_load(sk);
3845 pr_debug("msk=%p state=%d flags=%lx", msk, state, msk->flags);
3846 if (state == TCP_LISTEN) {
3847 struct socket *ssock = READ_ONCE(msk->subflow);
3847 struct sock *ssk = READ_ONCE(msk->first);
3848
3848
3849 if (WARN_ON_ONCE(!ssock || !ssock->sk))
3849 if (WARN_ON_ONCE(!ssk))
3850 return 0;
3851
3850 return 0;
3851
3852 return inet_csk_listen_poll(ssock->sk);
3852 return inet_csk_listen_poll(ssk);
3853 }
3854
3855 shutdown = READ_ONCE(sk->sk_shutdown);
3856 if (shutdown == SHUTDOWN_MASK || state == TCP_CLOSE)
3857 mask |= EPOLLHUP;
3858 if (shutdown & RCV_SHUTDOWN)
3859 mask |= EPOLLIN | EPOLLRDNORM | EPOLLRDHUP;
3860

--- 168 unchanged lines hidden ---
3853 }
3854
3855 shutdown = READ_ONCE(sk->sk_shutdown);
3856 if (shutdown == SHUTDOWN_MASK || state == TCP_CLOSE)
3857 mask |= EPOLLHUP;
3858 if (shutdown & RCV_SHUTDOWN)
3859 mask |= EPOLLIN | EPOLLRDNORM | EPOLLRDHUP;
3860

--- 168 unchanged lines hidden ---