do not reuse connection if share marked as isolated
authorSteve French <stfrench@microsoft.com>
Sun, 7 May 2023 22:57:17 +0000 (17:57 -0500)
committerSteve French <stfrench@microsoft.com>
Mon, 8 May 2023 17:00:47 +0000 (12:00 -0500)
"SHAREFLAG_ISOLATED_TRANSPORT" indicates that we should not reuse the socket
for this share (for future mounts).  Mark the socket as server->nosharesock if
share flags returned include SHAREFLAG_ISOLATED_TRANSPORT.

See MS-SMB2 MS-SMB2 2.2.10 and 3.2.5.5

Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/smb2pdu.c

index e33ca0d33906e5bce5530cf6c6304a6869e0b7bb..9ed61b6f9b21930e34b92396fe742a5d25961245 100644 (file)
@@ -1947,6 +1947,9 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
        init_copy_chunk_defaults(tcon);
        if (server->ops->validate_negotiate)
                rc = server->ops->validate_negotiate(xid, tcon);
+       if (rc == 0) /* See MS-SMB2 2.2.10 and 3.2.5.5 */
+               if (tcon->share_flags & SMB2_SHAREFLAG_ISOLATED_TRANSPORT)
+                       server->nosharesock = true;
 tcon_exit:
 
        free_rsp_buf(resp_buftype, rsp);