not overwriting file_lock structure after GET_LK
If we have preventing lock, cifs should overwrite file_lock structure with info about preventing lock. If we haven't preventing lock, cifs should leave it unchanged except for the lock type (change it to F_UNLCK). Signed-off-by: Pavel Shilovsky <piastryyy@gmail.com> Reviewed-by: Jeff Layton <jlayton@samba.org> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:

committed by
Steve French

parent
6513a81e93
commit
f05337c6ac
@@ -1810,8 +1810,21 @@ CIFSSMBPosixLock(const int xid, struct cifsTconInfo *tcon,
|
||||
}
|
||||
parm_data = (struct cifs_posix_lock *)
|
||||
((char *)&pSMBr->hdr.Protocol + data_offset);
|
||||
if (parm_data->lock_type == cpu_to_le16(CIFS_UNLCK))
|
||||
if (parm_data->lock_type == __constant_cpu_to_le16(CIFS_UNLCK))
|
||||
pLockData->fl_type = F_UNLCK;
|
||||
else {
|
||||
if (parm_data->lock_type ==
|
||||
__constant_cpu_to_le16(CIFS_RDLCK))
|
||||
pLockData->fl_type = F_RDLCK;
|
||||
else if (parm_data->lock_type ==
|
||||
__constant_cpu_to_le16(CIFS_WRLCK))
|
||||
pLockData->fl_type = F_WRLCK;
|
||||
|
||||
pLockData->fl_start = parm_data->start;
|
||||
pLockData->fl_end = parm_data->start +
|
||||
parm_data->length - 1;
|
||||
pLockData->fl_pid = parm_data->pid;
|
||||
}
|
||||
}
|
||||
|
||||
plk_err_exit:
|
||||
|
Reference in New Issue
Block a user