Loading fs/cifsd/smb2pdu.c +12 −15 Original line number Diff line number Diff line Loading @@ -6422,7 +6422,7 @@ int smb2_lock(struct ksmbd_work *work) int flags = 0; int cmd = 0; int err = 0, i; u64 lock_length; u64 lock_start, lock_length; struct ksmbd_lock *smb_lock = NULL, *cmp_lock, *tmp; int nolock = 0; LIST_HEAD(lock_list); Loading Loading @@ -6461,25 +6461,22 @@ int smb2_lock(struct ksmbd_work *work) cmd = smb2_set_flock_flags(flock, flags); flock->fl_start = le64_to_cpu(lock_ele[i].Offset); if (flock->fl_start > OFFSET_MAX) { lock_start = le64_to_cpu(lock_ele[i].Offset); lock_length = le64_to_cpu(lock_ele[i].Length); if (lock_start > U64_MAX - lock_length) { ksmbd_err("Invalid lock range requested\n"); rsp->hdr.Status = STATUS_INVALID_LOCK_RANGE; goto out; } if (lock_start > OFFSET_MAX) flock->fl_start = OFFSET_MAX; else flock->fl_start = lock_start; lock_length = le64_to_cpu(lock_ele[i].Length); if (lock_length > 0) { if (lock_length > OFFSET_MAX - flock->fl_start) { ksmbd_debug(SMB, "Invalid lock range requested\n"); if (lock_length > OFFSET_MAX - flock->fl_start) lock_length = OFFSET_MAX - flock->fl_start; rsp->hdr.Status = STATUS_INVALID_LOCK_RANGE; goto out; } } else { lock_length = 0; } flock->fl_end = flock->fl_start + lock_length; Loading Loading @@ -7713,7 +7710,7 @@ bool smb2_is_sign_req(struct ksmbd_work *work, unsigned int command) command != SMB2_OPLOCK_BREAK_HE) return true; return 0; return false; } /** Loading Loading
fs/cifsd/smb2pdu.c +12 −15 Original line number Diff line number Diff line Loading @@ -6422,7 +6422,7 @@ int smb2_lock(struct ksmbd_work *work) int flags = 0; int cmd = 0; int err = 0, i; u64 lock_length; u64 lock_start, lock_length; struct ksmbd_lock *smb_lock = NULL, *cmp_lock, *tmp; int nolock = 0; LIST_HEAD(lock_list); Loading Loading @@ -6461,25 +6461,22 @@ int smb2_lock(struct ksmbd_work *work) cmd = smb2_set_flock_flags(flock, flags); flock->fl_start = le64_to_cpu(lock_ele[i].Offset); if (flock->fl_start > OFFSET_MAX) { lock_start = le64_to_cpu(lock_ele[i].Offset); lock_length = le64_to_cpu(lock_ele[i].Length); if (lock_start > U64_MAX - lock_length) { ksmbd_err("Invalid lock range requested\n"); rsp->hdr.Status = STATUS_INVALID_LOCK_RANGE; goto out; } if (lock_start > OFFSET_MAX) flock->fl_start = OFFSET_MAX; else flock->fl_start = lock_start; lock_length = le64_to_cpu(lock_ele[i].Length); if (lock_length > 0) { if (lock_length > OFFSET_MAX - flock->fl_start) { ksmbd_debug(SMB, "Invalid lock range requested\n"); if (lock_length > OFFSET_MAX - flock->fl_start) lock_length = OFFSET_MAX - flock->fl_start; rsp->hdr.Status = STATUS_INVALID_LOCK_RANGE; goto out; } } else { lock_length = 0; } flock->fl_end = flock->fl_start + lock_length; Loading Loading @@ -7713,7 +7710,7 @@ bool smb2_is_sign_req(struct ksmbd_work *work, unsigned int command) command != SMB2_OPLOCK_BREAK_HE) return true; return 0; return false; } /** Loading