To avoid possible deadlock ksmbd should process locks asynchronously. Callers expecting vfs_file_locks() to return asynchronously should only use F_SETLK, not F_SETLKW. Signed-off-by: Vasily Averin <vvs@xxxxxxxxxxxxx> --- fs/ksmbd/smb2pdu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c index 0c020deb76bb..34f333549767 100644 --- a/fs/ksmbd/smb2pdu.c +++ b/fs/ksmbd/smb2pdu.c @@ -6646,13 +6646,13 @@ static int smb2_set_flock_flags(struct file_lock *flock, int flags) switch (flags) { case SMB2_LOCKFLAG_SHARED: ksmbd_debug(SMB, "received shared request\n"); - cmd = F_SETLKW; + cmd = F_SETLK; flock->fl_type = F_RDLCK; flock->fl_flags |= FL_SLEEP; break; case SMB2_LOCKFLAG_EXCLUSIVE: ksmbd_debug(SMB, "received exclusive request\n"); - cmd = F_SETLKW; + cmd = F_SETLK; flock->fl_type = F_WRLCK; flock->fl_flags |= FL_SLEEP; break; -- 2.25.1