From 3f32bf887d4425655e81da0b2234cbca3b1d56e6 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 18 Sep 2023 17:09:00 -0700 Subject: [PATCH] s3: smbd: named pipe reads are async. Use the same logic as for named pipe transacts to avoid crashes on shutdown. Noticed by Metze. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15423 Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme --- source3/smbd/smb2_read.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source3/smbd/smb2_read.c b/source3/smbd/smb2_read.c index 0101c42cf76..bac78e4c77a 100644 --- a/source3/smbd/smb2_read.c +++ b/source3/smbd/smb2_read.c @@ -494,6 +494,7 @@ static struct tevent_req *smbd_smb2_read_send(TALLOC_CTX *mem_ctx, if (IS_IPC(smbreq->conn)) { struct tevent_req *subreq = NULL; + bool ok; state->out_data = data_blob_talloc(state, NULL, in_length); if (in_length > 0 && tevent_req_nomem(state->out_data.data, req)) { @@ -515,6 +516,18 @@ static struct tevent_req *smbd_smb2_read_send(TALLOC_CTX *mem_ctx, tevent_req_set_callback(subreq, smbd_smb2_read_pipe_done, req); + + /* + * Make sure we mark the fsp as having outstanding async + * activity so we don't crash on shutdown close. + */ + + ok = aio_add_req_to_fsp(fsp, req); + if (!ok) { + tevent_req_nterror(req, NT_STATUS_NO_MEMORY); + return tevent_req_post(req, ev); + } + return req; }