ksmbd: move credit charge verification over smb2 request size verification
authorNamjae Jeon <namjae.jeon@samsung.com>
Fri, 16 Jul 2021 07:39:54 +0000 (16:39 +0900)
committerNamjae Jeon <namjae.jeon@samsung.com>
Mon, 19 Jul 2021 07:20:04 +0000 (16:20 +0900)
Move credit charge verification over smb2 request size verification
to avoid being skipped.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/ksmbd/smb2misc.c

index e68aa7d..9aa46bb 100644 (file)
@@ -385,6 +385,12 @@ int ksmbd_smb2_check_message(struct ksmbd_work *work)
                }
        }
 
+       if ((work->conn->vals->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU) &&
+           smb2_validate_credit_charge(hdr)) {
+               work->conn->ops->set_rsp_status(work, STATUS_INVALID_PARAMETER);
+               return 1;
+       }
+
        clc_len = smb2_calc_size(hdr);
        if (len != clc_len) {
                /* server can return one byte more due to implied bcc[0] */
@@ -423,12 +429,6 @@ int ksmbd_smb2_check_message(struct ksmbd_work *work)
                return 1;
        }
 
-       if ((work->conn->vals->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU) &&
-           smb2_validate_credit_charge(hdr)) {
-               work->conn->ops->set_rsp_status(work, STATUS_INVALID_PARAMETER);
-               return 1;
-       }
-
        return 0;
 }