cifs: Fix oops due to uncleared server->smbd_conn in reconnect
authorDavid Howells <dhowells@redhat.com>
Wed, 25 Jan 2023 14:02:13 +0000 (14:02 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Feb 2023 07:34:37 +0000 (08:34 +0100)
commit b7ab9161cf5ddc42a288edf9d1a61f3bdffe17c7 upstream.

In smbd_destroy(), clear the server->smbd_conn pointer after freeing the
smbd_connection struct that it points to so that reconnection doesn't get
confused.

Fixes: 8ef130f9ec27 ("CIFS: SMBD: Implement function to destroy a SMB Direct connection")
Cc: stable@vger.kernel.org
Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Acked-by: Tom Talpey <tom@talpey.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Cc: Long Li <longli@microsoft.com>
Cc: Pavel Shilovsky <piastryyy@gmail.com>
Cc: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/cifs/smbdirect.c

index 90789aa..8c816b2 100644 (file)
@@ -1405,6 +1405,7 @@ void smbd_destroy(struct TCP_Server_Info *server)
        destroy_workqueue(info->workqueue);
        log_rdma_event(INFO,  "rdma session destroyed\n");
        kfree(info);
+       server->smbd_conn = NULL;
 }
 
 /*