Procházet zdrojové kódy

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

Signed-off-by: Steve French <sfrench@us.ibm.com>
Steve French před 17 roky
rodič
revize
abb63d6c3d
2 změnil soubory, kde provedl 5 přidání a 2 odebrání
  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) {