]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Dec 2024 09:58:10 +0000 (10:58 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Dec 2024 09:58:10 +0000 (10:58 +0100)
added patches:
ksmbd-fix-slab-use-after-free-in-smb3_preauth_hash_rsp.patch

queue-5.15/ksmbd-fix-slab-use-after-free-in-smb3_preauth_hash_rsp.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/ksmbd-fix-slab-use-after-free-in-smb3_preauth_hash_rsp.patch b/queue-5.15/ksmbd-fix-slab-use-after-free-in-smb3_preauth_hash_rsp.patch
new file mode 100644 (file)
index 0000000..9a283d2
--- /dev/null
@@ -0,0 +1,39 @@
+From b8fc56fbca7482c1e5c0e3351c6ae78982e25ada Mon Sep 17 00:00:00 2001
+From: Namjae Jeon <linkinjeon@kernel.org>
+Date: Mon, 4 Nov 2024 13:40:41 +0900
+Subject: ksmbd: fix slab-use-after-free in smb3_preauth_hash_rsp
+
+From: Namjae Jeon <linkinjeon@kernel.org>
+
+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().
+
+Cc: stable@vger.kernel.org # v5.15+
+Reported-by: Norbert Szetei <norbert@doyensec.com>
+Tested-by: Norbert Szetei <norbert@doyensec.com>
+Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
+Signed-off-by: Steve French <stfrench@microsoft.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/ksmbd/server.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/fs/ksmbd/server.c
++++ b/fs/ksmbd/server.c
+@@ -238,11 +238,11 @@ static void __handle_ksmbd_work(struct k
+       } 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);
index ebcfb6f8518cc9bdcf130c3afd623d4008400a4f..c43c427bb3af95508534b99cbd06aa03bc933728 100644 (file)
@@ -283,3 +283,4 @@ staging-greybus-uart-fix-atomicity-violation-in-get_.patch
 alsa-hda-realtek-update-alc256-depop-procedure.patch
 apparmor-fix-do-simple-duplicate-message-elimination.patch
 parisc-fix-a-possible-dma-corruption.patch
+ksmbd-fix-slab-use-after-free-in-smb3_preauth_hash_rsp.patch