]> git.baikalelectronics.ru Git - kernel.git/commitdiff
cifs: check if SMB2 PDU size has been padded and suppress the warning
authorRonnie Sahlberg <lsahlber@redhat.com>
Wed, 22 Aug 2018 02:19:24 +0000 (12:19 +1000)
committerSteve French <stfrench@microsoft.com>
Thu, 23 Aug 2018 20:10:46 +0000 (15:10 -0500)
Some SMB2/3 servers, Win2016 but possibly others too, adds padding
not only between PDUs in a compound but also to the final PDU.
This padding extends the PDU to a multiple of 8 bytes.

Check if the unexpected length looks like this might be the case
and avoid triggering the log messages for :

  "SMB2 server sent bad RFC1001 len %d not %d\n"

Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/smb2misc.c

index 303d4592ebe727ea4d053d61f0036be69cfaa389..db0453660ff6c97d9d7ab66991d9b192fadcaed7 100644 (file)
@@ -237,6 +237,13 @@ smb2_check_message(char *buf, unsigned int len, struct TCP_Server_Info *srvr)
                if (clc_len == len + 1)
                        return 0;
 
+               /*
+                * Some windows servers (win2016) will pad also the final
+                * PDU in a compound to 8 bytes.
+                */
+               if (((clc_len + 7) & ~7) == len)
+                       return 0;
+
                /*
                 * MacOS server pads after SMB2.1 write response with 3 bytes
                 * of junk. Other servers match RFC1001 len to actual