RCV_SHUTDOWN
if (unlikely(sk->sk_shutdown & RCV_SHUTDOWN)) {
if (unlikely(sk->sk_shutdown & RCV_SHUTDOWN)) {
sk->sk_shutdown |= RCV_SHUTDOWN;
(sk->sk_shutdown & RCV_SHUTDOWN) ||
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
(sk->sk_shutdown & RCV_SHUTDOWN) ||
if (sk->sk_shutdown & RCV_SHUTDOWN)
sk->sk_shutdown & RCV_SHUTDOWN)
if (err == -EAGAIN && sk->sk_shutdown & RCV_SHUTDOWN) {
if (tfile->socket.sk->sk_shutdown & RCV_SHUTDOWN) {
tfile->socket.sk->sk_shutdown = RCV_SHUTDOWN;
tfile->socket.sk->sk_shutdown = RCV_SHUTDOWN;
tfile->socket.sk->sk_shutdown &= ~RCV_SHUTDOWN;
(conn->sock->sk->sk_shutdown & RCV_SHUTDOWN)) {
(conn->sock->sk->sk_shutdown & RCV_SHUTDOWN)) {
l_conn->sock->ops->shutdown(l_conn->sock, RCV_SHUTDOWN);
if (sk->sk_shutdown & RCV_SHUTDOWN)
else if (sk->sk_shutdown & RCV_SHUTDOWN)
sk->sk_shutdown |= RCV_SHUTDOWN;
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_err || (sk->sk_shutdown & RCV_SHUTDOWN))
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
sk->sk_shutdown |= RCV_SHUTDOWN;
if ((how & RCV_SHUTDOWN) && !(sk->sk_shutdown & RCV_SHUTDOWN)) {
sk->sk_shutdown |= RCV_SHUTDOWN;
(sk->sk_shutdown & RCV_SHUTDOWN) ||
if (sk->sk_shutdown & RCV_SHUTDOWN)
(sk->sk_shutdown & RCV_SHUTDOWN))
if (sk->sk_shutdown & RCV_SHUTDOWN)
(sk->sk_shutdown & RCV_SHUTDOWN))
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (shutdown & RCV_SHUTDOWN)
if (!(how & RCV_SHUTDOWN))
if (sk->sk_state == TCP_CLOSE || (sk->sk_shutdown & RCV_SHUTDOWN))
if (copied > 0 && !time_to_ack && !(sk->sk_shutdown & RCV_SHUTDOWN)) {
(sk->sk_shutdown & RCV_SHUTDOWN) ||
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
(sk->sk_shutdown & RCV_SHUTDOWN) ||
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
WRITE_ONCE(sk->sk_shutdown, sk->sk_shutdown | RCV_SHUTDOWN);
if (sk->sk_shutdown & RCV_SHUTDOWN) {
!(sk->sk_shutdown & RCV_SHUTDOWN) && first_packet_length(sk) == -1)
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
sk->sk_shutdown = sk->sk_shutdown | RCV_SHUTDOWN;
if (sk->sk_shutdown & RCV_SHUTDOWN)
(sk->sk_shutdown & RCV_SHUTDOWN))
if (how == RCV_SHUTDOWN || how == SHUTDOWN_MASK) {
if (sk->sk_shutdown & RCV_SHUTDOWN) {
if (sk->sk_shutdown & RCV_SHUTDOWN) {
sk->sk_shutdown &= RCV_SHUTDOWN;
(READ_ONCE(sk->sk_shutdown) & RCV_SHUTDOWN) ||
if (sk->sk_shutdown & RCV_SHUTDOWN)
(sk->sk_shutdown & RCV_SHUTDOWN) ||
if (sk->sk_shutdown & RCV_SHUTDOWN)
int how = RCV_SHUTDOWN | SEND_SHUTDOWN;
mptcp_subflow_shutdown(sk, ssk, RCV_SHUTDOWN | SEND_SHUTDOWN);
if (sk->sk_state == TCP_CLOSE || (sk->sk_shutdown & RCV_SHUTDOWN))
(sk->sk_shutdown & RCV_SHUTDOWN) ||
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (!(how & RCV_SHUTDOWN))
if (shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
(sk->sk_shutdown & RCV_SHUTDOWN) ||
WRITE_ONCE(sk->sk_shutdown, sk->sk_shutdown | RCV_SHUTDOWN);
return sk->sk_shutdown & RCV_SHUTDOWN || sk->sk_state == TCP_CLOSE;
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
sk->sk_shutdown |= RCV_SHUTDOWN;
sk->sk_shutdown |= RCV_SHUTDOWN;
(sk->sk_shutdown & RCV_SHUTDOWN)) {
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
(sk->sk_shutdown & RCV_SHUTDOWN))
newsk->sk_shutdown |= RCV_SHUTDOWN;
if (sk->sk_shutdown & RCV_SHUTDOWN &&
if (sk->sk_shutdown & RCV_SHUTDOWN &&
if (sk->sk_state == SMC_CLOSED && (sk->sk_shutdown & RCV_SHUTDOWN)) {
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_state == SMC_CLOSED && (sk->sk_shutdown & RCV_SHUTDOWN)) {
smc->sk.sk_shutdown |= RCV_SHUTDOWN;
smc->clcsock->sk->sk_shutdown |= RCV_SHUTDOWN;
READ_ONCE(sk->sk_shutdown) & RCV_SHUTDOWN ||
if (sk->sk_state == SMC_CLOSED || sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN) {
if (sk->sk_shutdown & RCV_SHUTDOWN) {
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (unlikely(state != TCP_ESTABLISHED || shutdown & RCV_SHUTDOWN))
if (sk->sk_shutdown & RCV_SHUTDOWN)
!(other->sk_shutdown & RCV_SHUTDOWN) &&
other->sk_shutdown & RCV_SHUTDOWN) {
if (other->sk_shutdown & RCV_SHUTDOWN) {
(other->sk_shutdown & RCV_SHUTDOWN)) {
(other->sk_shutdown & RCV_SHUTDOWN))
(READ_ONCE(sk->sk_shutdown) & RCV_SHUTDOWN))
(sk->sk_shutdown & RCV_SHUTDOWN) ||
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (mode&RCV_SHUTDOWN)
peer_mode |= RCV_SHUTDOWN;
else if (peer_mode & RCV_SHUTDOWN)
if (shutdown & RCV_SHUTDOWN)
if (shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
mode = mode & (RCV_SHUTDOWN | SEND_SHUTDOWN);
if (sk->sk_shutdown & RCV_SHUTDOWN ||
(sk->sk_shutdown & RCV_SHUTDOWN)) {
!(sk->sk_shutdown & RCV_SHUTDOWN)) {
if (sk->sk_shutdown & RCV_SHUTDOWN ||
vsk->peer_shutdown & RCV_SHUTDOWN) {
!(vsk->peer_shutdown & RCV_SHUTDOWN)) {
(vsk->peer_shutdown & RCV_SHUTDOWN)) {
(sk->sk_shutdown & RCV_SHUTDOWN) ||
else if (sk->sk_shutdown & RCV_SHUTDOWN)
} else if (sk->sk_shutdown & RCV_SHUTDOWN) {
if (sk->sk_shutdown & RCV_SHUTDOWN) {
.flags = (mode & RCV_SHUTDOWN ?
vsk->peer_shutdown |= RCV_SHUTDOWN;
while (!(vsk->peer_shutdown & RCV_SHUTDOWN) &&
while (!(vsk->peer_shutdown & RCV_SHUTDOWN) &&
while (!(vsk->peer_shutdown & RCV_SHUTDOWN) &&
while (!(vsk->peer_shutdown & RCV_SHUTDOWN) &&
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (sk->sk_shutdown & RCV_SHUTDOWN)
if (err == -EAGAIN && sk->sk_shutdown & RCV_SHUTDOWN)