瀏覽代碼

[CIFS] Return better error when server requires signing but client forbids

Signed-off-by: Steve French <sfrench@us.ibm.com>
Steve French 18 年之前
父節點
當前提交
abb63d6c3d
共有 2 個文件被更改,包括 5 次插入2 次删除
  1. 2 1
      fs/cifs/CHANGES
  2. 3 1
      fs/cifs/cifssmb.c

+ 2 - 1
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
 leak that causes cifsd not to stop and rmmod to fail to cleanup
 cifs_request_buffers pool. Fix problem with POSIX Open/Mkdir on
 cifs_request_buffers pool. Fix problem with POSIX Open/Mkdir on
 bigendian architectures. Fix possible memory corruption when
 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
 Version 1.50
 ------------
 ------------

+ 3 - 1
fs/cifs/cifssmb.c

@@ -663,10 +663,12 @@ signing_check:
 		/* MUST_SIGN already includes the MAY_SIGN FLAG
 		/* MUST_SIGN already includes the MAY_SIGN FLAG
 		   so if this is zero it means that signing is disabled */
 		   so if this is zero it means that signing is disabled */
 		cFYI(1, ("Signing disabled"));
 		cFYI(1, ("Signing disabled"));
-		if (server->secMode & SECMODE_SIGN_REQUIRED)
+		if (server->secMode & SECMODE_SIGN_REQUIRED) {
 			cERROR(1, ("Server requires "
 			cERROR(1, ("Server requires "
 				   "packet signing to be enabled in "
 				   "packet signing to be enabled in "
 				   "/proc/fs/cifs/SecurityFlags."));
 				   "/proc/fs/cifs/SecurityFlags."));
+			rc = -EOPNOTSUPP;
+		}
 		server->secMode &=
 		server->secMode &=
 			~(SECMODE_SIGN_ENABLED | SECMODE_SIGN_REQUIRED);
 			~(SECMODE_SIGN_ENABLED | SECMODE_SIGN_REQUIRED);
 	} else if ((secFlags & CIFSSEC_MUST_SIGN) == CIFSSEC_MUST_SIGN) {
 	} else if ((secFlags & CIFSSEC_MUST_SIGN) == CIFSSEC_MUST_SIGN) {