aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2007-10-18 02:58:40 +0000
committerSteve French <sfrench@us.ibm.com>2007-10-18 02:58:40 +0000
commitabb63d6c3d3d0e4d93b63589135962091154be9b (patch)
treeb0b22474c4bbaa5f95f4ad1f5c4ee2178a74fc9a /fs/cifs
parent[CIFS] fix typo (diff)
downloadlinux-dev-abb63d6c3d3d0e4d93b63589135962091154be9b.tar.xz
linux-dev-abb63d6c3d3d0e4d93b63589135962091154be9b.zip
[CIFS] Return better error when server requires signing but client forbids
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs')
-rw-r--r--fs/cifs/CHANGES3
-rw-r--r--fs/cifs/cifssmb.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 2459ef0a1396..3d419163c3d3 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -11,7 +11,8 @@ connect fails (e.g. due to signing negotiation failure) fix
leak that causes cifsd not to stop and rmmod to fail to cleanup
cifs_request_buffers pool. Fix problem with POSIX Open/Mkdir on
bigendian architectures. Fix possible memory corruption when
-EAGAIN returned on kern_recvmsg.
+EAGAIN returned on kern_recvmsg. Return better error if server
+requires packet signing but client has disabled it.
Version 1.50
------------
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index d22af63e8f1f..2b2d4fec3656 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -663,10 +663,12 @@ signing_check:
/* MUST_SIGN already includes the MAY_SIGN FLAG
so if this is zero it means that signing is disabled */
cFYI(1, ("Signing disabled"));
- if (server->secMode & SECMODE_SIGN_REQUIRED)
+ if (server->secMode & SECMODE_SIGN_REQUIRED) {
cERROR(1, ("Server requires "
"packet signing to be enabled in "
"/proc/fs/cifs/SecurityFlags."));
+ rc = -EOPNOTSUPP;
+ }
server->secMode &=
~(SECMODE_SIGN_ENABLED | SECMODE_SIGN_REQUIRED);
} else if ((secFlags & CIFSSEC_MUST_SIGN) == CIFSSEC_MUST_SIGN) {