SUNRPC: Send TLS Closure alerts before closing a TCP socket
authorChuck Lever <chuck.lever@oracle.com>
Thu, 27 Jul 2023 17:36:44 +0000 (13:36 -0400)
committerJakub Kicinski <kuba@kernel.org>
Fri, 28 Jul 2023 21:07:59 +0000 (14:07 -0700)
Before closing a TCP connection, the TLS protocol wants peers to
send session close Alert notifications. Add those in both the RPC
client and server.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Link: https://lore.kernel.org/r/169047939404.5241.14392506226409865832.stgit@oracle-102.nfsv4bat.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/sunrpc/svcsock.c
net/sunrpc/xprtsock.c

index 449df8c..cca6ee7 100644 (file)
@@ -1622,6 +1622,8 @@ static void svc_tcp_sock_detach(struct svc_xprt *xprt)
 {
        struct svc_sock *svsk = container_of(xprt, struct svc_sock, sk_xprt);
 
+       tls_handshake_close(svsk->sk_sock);
+
        svc_sock_detach(xprt);
 
        if (!test_bit(XPT_LISTENER, &xprt->xpt_flags)) {
index 9457ebf..5096aa6 100644 (file)
@@ -1293,6 +1293,8 @@ static void xs_close(struct rpc_xprt *xprt)
 
        dprintk("RPC:       xs_close xprt %p\n", xprt);
 
+       if (transport->sock)
+               tls_handshake_close(transport->sock);
        xs_reset_transport(transport);
        xprt->reestablish_timeout = 0;
 }