diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 0a11dbb..460d87b 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -671,21 +671,6 @@
 	}
 }
 
-/*
- * Copied from fs/locks.c with small changes.
- * Remove waiter from blocker's block list.
- * When blocker ends up pointing to itself then the list is empty.
- */
-static void
-cifs_locks_delete_block(struct file_lock *waiter)
-{
-	lock_flocks();
-	list_del_init(&waiter->fl_block);
-	list_del_init(&waiter->fl_link);
-	waiter->fl_next = NULL;
-	unlock_flocks();
-}
-
 static bool
 __cifs_find_lock_conflict(struct cifsInodeInfo *cinode, __u64 offset,
 			__u64 length, __u8 type, __u16 netfid,
@@ -835,39 +820,6 @@
 	return rc;
 }
 
-/* Called with locked lock_mutex, return with unlocked. */
-static int
-cifs_posix_lock_file_wait_locked(struct file *file, struct file_lock *flock)
-{
-	struct cifsInodeInfo *cinode = CIFS_I(file->f_path.dentry->d_inode);
-	int rc;
-
-	while (true) {
-		rc = posix_lock_file(file, flock, NULL);
-		mutex_unlock(&cinode->lock_mutex);
-		if (rc != FILE_LOCK_DEFERRED)
-			break;
-		rc = wait_event_interruptible(flock->fl_wait, !flock->fl_next);
-		if (!rc) {
-			mutex_lock(&cinode->lock_mutex);
-			continue;
-		}
-		cifs_locks_delete_block(flock);
-		break;
-	}
-	return rc;
-}
-
-static int
-cifs_posix_lock_file_wait(struct file *file, struct file_lock *flock)
-{
-	struct cifsInodeInfo *cinode = CIFS_I(file->f_path.dentry->d_inode);
-
-	mutex_lock(&cinode->lock_mutex);
-	/* lock_mutex will be released by the function below */
-	return cifs_posix_lock_file_wait_locked(file, flock);
-}
-
 /*
  * Set the byte-range lock (posix style). Returns:
  * 1) 0, if we set the lock and don't need to request to the server;
@@ -888,9 +840,9 @@
 		mutex_unlock(&cinode->lock_mutex);
 		return rc;
 	}
-
-	/* lock_mutex will be released by the function below */
-	return cifs_posix_lock_file_wait_locked(file, flock);
+	rc = posix_lock_file_wait(file, flock);
+	mutex_unlock(&cinode->lock_mutex);
+	return rc;
 }
 
 static int
@@ -1386,7 +1338,7 @@
 
 out:
 	if (flock->fl_flags & FL_POSIX)
-		cifs_posix_lock_file_wait(file, flock);
+		posix_lock_file_wait(file, flock);
 	return rc;
 }
 
