- } else {
- struct cifsFileInfo *fid = (struct cifsFileInfo *)file->private_data;
-
- if (numLock) {
- rc = CIFSSMBLock(xid, pTcon, netfid, length, pfLock->fl_start,
- 0, numLock, lockType, wait_flag);
-
- if (rc == 0) {
- /* For Windows locks we must store them. */
- rc = store_file_lock(fid, length,
- pfLock->fl_start, lockType);
- }
- } else if (numUnlock) {
- /* For each stored lock that this unlock overlaps
- completely, unlock it. */
- int stored_rc = 0;
- struct cifsLockInfo *li, *tmp;
-
- rc = 0;
- down(&fid->lock_sem);
- list_for_each_entry_safe(li, tmp, &fid->llist, llist) {
- if (pfLock->fl_start <= li->offset &&
- length >= li->length) {
- stored_rc = CIFSSMBLock(xid, pTcon, netfid,
- li->length, li->offset,
- 1, 0, li->type, FALSE);
- if (stored_rc)
- rc = stored_rc;
-
- list_del(&li->llist);
- kfree(li);
- }
- }
- up(&fid->lock_sem);
- }
- }
-
+ } else
+ rc = CIFSSMBLock(xid, pTcon, netfid, length, pfLock->fl_start,
+ numUnlock, numLock, lockType, wait_flag);