ksmbd: fix leak of transform buffer on encrypt_resp() failure
Subsystems (2)
PATCH 1/1 ksmbd: fix leak of transform buffer on encrypt_resp() failure
When encrypt_resp() fails at the send path, we only set STATUS_DATA_ERROR but leave the transform buffer allocated (work->tr_buf in this tree). Repeating this path leaks kernel memory and can lead to OOM (DoS) when encryption is required.
Reproduced on: Linux v6.18-rc2 (self-built test kernel)
Fix by freeing the transform buffer and forcing plaintext error reply.
Reported-by Qianchang Zhao <[email protected]>
Reported-by Zhitong Liu <[email protected]>
Signed-off-by Qianchang Zhao <[email protected]>
--- fs/smb/server/server.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
fs/smb/server/server.c +5 -5
@@ -246,11 +246,11 @@ static void __handle_ksmbd_work(struct ksmbd_work *work, rc = conn->ops->encrypt_resp (work);if (rc <0 ) { conn->ops->set_rsp_status (work,STATUS_DATA_ERROR ); - work->encrypted = false; -if (work->tr_buf) { -kvfree (work->tr_buf); - work->tr_buf =NULL ; - } + work->encrypted = false; +if (work->tr_buf) { +kvfree (work->tr_buf); + work->tr_buf =NULL ; + } } }if (work->sess)
Signature · 1 line
2.34.1