diff options
author | Ronnie Sahlberg <lsahlber@redhat.com> | 2018-08-21 22:19:24 -0400 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2018-08-23 16:10:46 -0400 |
commit | e6c47dd0da1e3a484e778046fc10da0b20606a86 (patch) | |
tree | d31ac49b712f9e4b350d7b369b0837a2bda8f926 | |
parent | 4d8dfafc5cb88fe294a9273a3ef75dd4f9fa1aa2 (diff) |
cifs: check if SMB2 PDU size has been padded and suppress the warning
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>
-rw-r--r-- | fs/cifs/smb2misc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/cifs/smb2misc.c b/fs/cifs/smb2misc.c index 303d4592ebe7..db0453660ff6 100644 --- a/fs/cifs/smb2misc.c +++ b/fs/cifs/smb2misc.c | |||
@@ -238,6 +238,13 @@ smb2_check_message(char *buf, unsigned int len, struct TCP_Server_Info *srvr) | |||
238 | return 0; | 238 | return 0; |
239 | 239 | ||
240 | /* | 240 | /* |
241 | * Some windows servers (win2016) will pad also the final | ||
242 | * PDU in a compound to 8 bytes. | ||
243 | */ | ||
244 | if (((clc_len + 7) & ~7) == len) | ||
245 | return 0; | ||
246 | |||
247 | /* | ||
241 | * MacOS server pads after SMB2.1 write response with 3 bytes | 248 | * MacOS server pads after SMB2.1 write response with 3 bytes |
242 | * of junk. Other servers match RFC1001 len to actual | 249 | * of junk. Other servers match RFC1001 len to actual |
243 | * SMB2/SMB3 frame length (header + smb2 response specific data) | 250 | * SMB2/SMB3 frame length (header + smb2 response specific data) |