From 0b0e279142fa3ab27ac16b75cbc1da4dadcdcf82 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Thu, 5 Aug 2021 10:20:31 -0700 Subject: [PATCH] s3: smbd: For FSCTL calls that go async, add the outstanding tevent_reqs to the aio list on the file handle. TODO: Add test. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14769 Signed-off-by: Jeremy Allison --- source3/smbd/smb2_ioctl.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source3/smbd/smb2_ioctl.c b/source3/smbd/smb2_ioctl.c index d29ff5d0303..4fa5dbd9810 100644 --- a/source3/smbd/smb2_ioctl.c +++ b/source3/smbd/smb2_ioctl.c @@ -232,6 +232,21 @@ NTSTATUS smbd_smb2_request_process_ioctl(struct smbd_smb2_request *req) } tevent_req_set_callback(subreq, smbd_smb2_request_ioctl_done, req); + /* + * If the FSCTL has gone async on a file handle, remember + * to add it to the list of async requests we need to wait + * for on file handle close. + */ + if (in_fsp != NULL && tevent_req_is_in_progress(subreq)) { + bool ok; + + ok = aio_add_req_to_fsp(in_fsp, subreq); + if (!ok) { + tevent_req_nterror(subreq, NT_STATUS_NO_MEMORY); + (void)tevent_req_post(subreq, req->sconn->ev_ctx); + } + } + return smbd_smb2_request_pending_queue(req, subreq, 1000); } -- 2.30.2