cifs: mount with "unix" mount option for SMB1 incorrectly handled
commit 0e314e4526
upstream.
Although by default we negotiate CIFS Unix Extensions for SMB1 mounts to
Samba (and they work if the user does not specify "unix" or "posix" or
"linux" on mount), and we do properly handle when a user turns them off
with "nounix" mount parm. But with the changes to the mount API we
broke cases where the user explicitly specifies the "unix" option (or
equivalently "linux" or "posix") on mount with vers=1.0 to Samba or other
servers which support the CIFS Unix Extensions.
"mount error(95): Operation not supported"
and logged:
"CIFS: VFS: Check vers= mount option. SMB3.11 disabled but required for POSIX extensions"
even though CIFS Unix Extensions are supported for vers=1.0 This patch fixes
the case where the user specifies both "unix" (or equivalently "posix" or
"linux") and "vers=1.0" on mount to a server which supports the
CIFS Unix Extensions.
Cc: stable@vger.kernel.org
Reviewed-by: David Howells <dhowell@redhat.com>
Reviewed-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
08e863bd57
commit
f8533c1941
@ -2614,6 +2614,13 @@ cifs_get_tcon(struct cifs_ses *ses, struct smb3_fs_context *ctx)
|
||||
cifs_dbg(VFS, "Server does not support mounting with posix SMB3.11 extensions\n");
|
||||
rc = -EOPNOTSUPP;
|
||||
goto out_fail;
|
||||
} else if (ses->server->vals->protocol_id == SMB10_PROT_ID)
|
||||
if (cap_unix(ses))
|
||||
cifs_dbg(FYI, "Unix Extensions requested on SMB1 mount\n");
|
||||
else {
|
||||
cifs_dbg(VFS, "SMB1 Unix Extensions not supported by server\n");
|
||||
rc = -EOPNOTSUPP;
|
||||
goto out_fail;
|
||||
} else {
|
||||
cifs_dbg(VFS,
|
||||
"Check vers= mount option. SMB3.11 disabled but required for POSIX extensions\n");
|
||||
|
Reference in New Issue
Block a user