Skip to content

Commit

Permalink
kernel: ksmbd: only v2 leases handle the directory
Browse files Browse the repository at this point in the history
This backport a fix for ksmbd.

Refer: namjaejeon/ksmbd#469

Signed-off-by: Chen Minqiang <[email protected]>
  • Loading branch information
ptpt52 authored and hauke committed Jan 17, 2024
1 parent e1a6c72 commit 038b0cb
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
From cb1d41b99e4afa062f904339666fae2578559718 Mon Sep 17 00:00:00 2001
From: Namjae Jeon <[email protected]>
Date: Mon, 15 Jan 2024 10:24:54 +0900
Subject: [PATCH] ksmbd: only v2 leases handle the directory

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: [email protected]
Signed-off-by: Namjae Jeon <[email protected]>
Signed-off-by: Steve French <[email protected]>
---
fs/ksmbd/oplock.c | 6 ++++++
1 file changed, 6 insertions(+)

--- a/fs/ksmbd/oplock.c
+++ b/fs/ksmbd/oplock.c
@@ -1191,6 +1191,12 @@ int smb_grant_oplock(struct ksmbd_work *
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;
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
From 86b7307af26834415e1ba8597319a8b64846346f Mon Sep 17 00:00:00 2001
From: Namjae Jeon <[email protected]>
Date: Mon, 15 Jan 2024 10:24:54 +0900
Subject: [PATCH] ksmbd: only v2 leases handle the directory

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: [email protected]
Signed-off-by: Namjae Jeon <[email protected]>
Signed-off-by: Steve French <[email protected]>
---
fs/smb/server/oplock.c | 6 ++++++
1 file changed, 6 insertions(+)

--- a/fs/smb/server/oplock.c
+++ b/fs/smb/server/oplock.c
@@ -1191,6 +1191,12 @@ int smb_grant_oplock(struct ksmbd_work *
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;

0 comments on commit 038b0cb

Please sign in to comment.