]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ksmbd: only v2 leases handle the directory
authorNamjae Jeon <linkinjeon@kernel.org>
Mon, 15 Jan 2024 01:24:54 +0000 (10:24 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Feb 2024 07:54:19 +0000 (08:54 +0100)
[ Upstream commit 77bebd186442a7d703b796784db7495129cc3e70 ]

When smb2 leases is disable, ksmbd can send oplock break notification
and cause wait oplock break ack timeout. It may appear like hang when
accessing a directory. This patch make only v2 leases handle the
directory.

Cc: stable@vger.kernel.org
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/ksmbd/oplock.c

index 2da256259722d564a150bac6aa696faa8e2702ed..6786276598032a566f34e4563cbf1354ab905d2c 100644 (file)
@@ -1191,6 +1191,12 @@ int smb_grant_oplock(struct ksmbd_work *work, int req_op_level, u64 pid,
        bool prev_op_has_lease;
        __le32 prev_op_state = 0;
 
+       /* Only v2 leases handle the directory */
+       if (S_ISDIR(file_inode(fp->filp)->i_mode)) {
+               if (!lctx || lctx->version != 2)
+                       return 0;
+       }
+
        opinfo = alloc_opinfo(work, pid, tid);
        if (!opinfo)
                return -ENOMEM;