--- ./net/xfrm/espintcp.c.orig 2020-06-12 14:19:13.674502577 -0400 +++ ./net/xfrm/espintcp.c 2020-06-12 14:19:39.258170511 -0400 @@ -109,8 +109,11 @@ flags |= nonblock ? MSG_DONTWAIT : 0; skb = __skb_recv_datagram(sk, &ctx->ike_queue, flags, &off, &err); - if (!skb) - return err; + if (!skb) { + if (err == -EAGAIN && sk->sk_shutdown & RCV_SHUTDOWN) + return 0; + return err; + } copied = len; if (copied > skb->len)