diff options
author | Enzo Matsumiya <ematsumiya@suse.de> | 2022-07-19 20:31:51 +0300 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2022-08-01 09:34:44 +0300 |
commit | da3847894fddc27ca95d5ac0012f444a77a5e0c3 (patch) | |
tree | 1f330027713bdc0c4c397bcf9740bd17220da702 /fs/cifs/connect.c | |
parent | c6f62f81b488d00afaa86bae26c6ce9ab12c709e (diff) | |
download | linux-da3847894fddc27ca95d5ac0012f444a77a5e0c3.tar.xz |
smb2: small refactor in smb2_check_message()
If the command is SMB2_IOCTL, OutputLength and OutputContext are
optional and can be zero, so return early and skip calculated length
check.
Move the mismatched length message to the end of the check, to avoid
unnecessary logs when the check was not a real miscalculation.
Also change the pr_warn_once() to a pr_warn() so we're sure to get a
log for the real mismatches.
Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r-- | fs/cifs/connect.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index fdd8452b8450..8859da70cb06 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -1039,19 +1039,18 @@ int cifs_handle_standard(struct TCP_Server_Info *server, struct mid_q_entry *mid) { char *buf = server->large_buf ? server->bigbuf : server->smallbuf; - int length; + int rc; /* * We know that we received enough to get to the MID as we * checked the pdu_length earlier. Now check to see - * if the rest of the header is OK. We borrow the length - * var for the rest of the loop to avoid a new stack var. + * if the rest of the header is OK. * * 48 bytes is enough to display the header and a little bit * into the payload for debugging purposes. */ - length = server->ops->check_message(buf, server->total_read, server); - if (length != 0) + rc = server->ops->check_message(buf, server->total_read, server); + if (rc) cifs_dump_mem("Bad SMB: ", buf, min_t(unsigned int, server->total_read, 48)); @@ -1066,9 +1065,9 @@ cifs_handle_standard(struct TCP_Server_Info *server, struct mid_q_entry *mid) return -1; if (!mid) - return length; + return rc; - handle_mid(mid, server, buf, length); + handle_mid(mid, server, buf, rc); return 0; } |