Skip to contentSkip to conversation

ksmbd: fix slab-use-after-free in smb3_preauth_hash_rsp

PATCH In review [email protected] 2 participants 2 messages Nov 27, 2024 Stable branch

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ksmbd: fix slab-use-after-free in smb3_preauth_hash_rsp

From: Namjae Jeon <[email protected]>

commit b8fc56fbca7482c1e5c0e3351c6ae78982e25ada upstream.

ksmbd_user_session_put should be called under smb3_preauth_hash_rsp(). It will avoid freeing session before calling smb3_preauth_hash_rsp().

---
 fs/ksmbd/server.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
fs/ksmbd/server.c +2 -2
index 09ebcf39d5bc..da5b9678ad05 100644
@@ -238,11 +238,11 @@ static void __handle_ksmbd_work(struct ksmbd_work *work,
 	} while (is_chained == true);
 
 send:
-	if (work->sess)
-		ksmbd_user_session_put(work->sess);
 	if (work->tcon)
 		ksmbd_tree_connect_put(work->tcon);
 	smb3_preauth_hash_rsp(work);
+	if (work->sess)
+		ksmbd_user_session_put(work->sess);
 	if (work->sess && work->sess->enc && work->encrypted &&
 	    conn->ops->encrypt_resp) {
 		rc = conn->ops->encrypt_resp(work);
Signature · 1 line
2.34.1
maintainer
#1 lore raw

[ Sasha's backport helper bot ]

Hi,

The upstream commit SHA1 provided is correct: b8fc56fbca7482c1e5c0e3351c6ae78982e25ada

WARNING: Author mismatch between patch and upstream commit:
Backport author: <[email protected]>
Commit author: Namjae Jeon <[email protected]>

Status in newer kernel trees:
6.12.y | Present (exact SHA1)
6.11.y | Present (different SHA1: 1b6ad475d4ed) 6.6.y | Present (different SHA1: c6cdc08c25a8) 6.1.y | Present (different SHA1: f7557bbca40d) 5.15.y | Not found

Note: The patch differs from the upstream commit:
---

tmp/tmp.cpyd1kXGy5 renamed from - +12 -5
@@ -1,3 +1,5 @@
+commit b8fc56fbca7482c1e5c0e3351c6ae78982e25ada upstream.
+
 ksmbd_user_session_put should be called under smb3_preauth_hash_rsp().
 It will avoid freeing session before calling smb3_preauth_hash_rsp().
 
@@ -6,14 +8,16 @@
 Tested-by: Norbert Szetei <[email protected]>
 Signed-off-by: Namjae Jeon <[email protected]>
 Signed-off-by: Steve French <[email protected]>
+Signed-off-by: Greg Kroah-Hartman <[email protected]>
+Signed-off-by: Mingli Yu <[email protected]>
 ---
- fs/smb/server/server.c | 4 ++--
+ fs/ksmbd/server.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/fs/smb/server/server.c b/fs/smb/server/server.c
-index 9670c97f14b3e..e7f14f8df943e 100644
---- a/fs/smb/server/server.c
-+++ b/fs/smb/server/server.c
+diff --git a/fs/ksmbd/server.c b/fs/ksmbd/server.c
+index 09ebcf39d5bc..da5b9678ad05 100644
+--- a/fs/ksmbd/server.c
++++ b/fs/ksmbd/server.c
 @@ -238,11 +238,11 @@ static void __handle_ksmbd_work(struct ksmbd_work *work,
  	} while (is_chained == true);
  
@@ -28,3 +32,6 @@
  	if (work->sess && work->sess->enc && work->encrypted &&
  	    conn->ops->encrypt_resp) {
  		rc = conn->ops->encrypt_resp(work);
+-- 
+2.34.1
+

---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-5.15.y       |  Success    |  Success   |