cmp_lock
ret = cmp_lock(fdtv, opcr_address, opcr);
if (cmp_lock(fdtv, opcr_address, opcr) < 0)
struct ksmbd_lock *smb_lock = NULL, *cmp_lock, *tmp, *tmp2;
list_for_each_entry(cmp_lock, &lock_list, llist) {
if (cmp_lock->fl->fl_start <= flock->fl_start &&
cmp_lock->fl->fl_end >= flock->fl_end) {
if (cmp_lock->fl->c.flc_type != F_UNLCK &&
list_for_each_entry_safe(cmp_lock, tmp2, &conn->lock_list, clist) {
if (file_inode(cmp_lock->fl->c.flc_file) !=
if (cmp_lock->fl->c.flc_file == smb_lock->fl->c.flc_file &&
cmp_lock->start == smb_lock->start &&
cmp_lock->end == smb_lock->end &&
!lock_defer_pending(cmp_lock->fl)) {
list_del(&cmp_lock->flist);
list_del(&cmp_lock->clist);
locks_free_lock(cmp_lock->fl);
kfree(cmp_lock);
if (cmp_lock->fl->c.flc_file == smb_lock->fl->c.flc_file) {
if (cmp_lock->flags & SMB2_LOCKFLAG_SHARED)
if (cmp_lock->zero_len && !smb_lock->zero_len &&
cmp_lock->start > smb_lock->start &&
cmp_lock->start < smb_lock->end) {
if (smb_lock->zero_len && !cmp_lock->zero_len &&
smb_lock->start > cmp_lock->start &&
smb_lock->start < cmp_lock->end) {
if (((cmp_lock->start <= smb_lock->start &&
cmp_lock->end > smb_lock->start) ||
(cmp_lock->start < smb_lock->end &&
cmp_lock->end >= smb_lock->end)) &&
!cmp_lock->zero_len && !smb_lock->zero_len) {