From ec639dd816a54fc9dcf2218442e70290b1cc9b87 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Thu, 16 Apr 2015 22:28:25 +0200 Subject: [PATCH 1/2] s3:smbd: missing tevent_req_nterror The error code path in case fsp == NULL misses a call tevent_req_nterror(). https://bugzilla.samba.org/show_bug.cgi?id=11224 Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison (cherry picked from commit ad52dcdf5de6f5f2c2ee156d93ebbb343f39e526) --- source3/smbd/aio.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source3/smbd/aio.c b/source3/smbd/aio.c index e2306a9..253782b 100644 --- a/source3/smbd/aio.c +++ b/source3/smbd/aio.c @@ -789,10 +789,10 @@ static void aio_pread_smb2_done(struct tevent_req *req) (nread == -1) ? strerror(err) : "no error")); if (fsp == NULL) { - DEBUG( 3, ("aio_pread_smb2_done: file closed whilst " - "aio outstanding (mid[%llu]).\n", - (unsigned long long)aio_ex->smbreq->mid)); + DEBUG(3, ("%s: request cancelled (mid[%ju])\n", + __func__, (uintmax_t)aio_ex->smbreq->mid)); TALLOC_FREE(aio_ex); + tevent_req_nterror(subreq, NT_STATUS_INTERNAL_ERROR); return; } @@ -962,10 +962,10 @@ static void aio_pwrite_smb2_done(struct tevent_req *req) (nwritten == -1) ? strerror(err) : "no error")); if (fsp == NULL) { - DEBUG( 3, ("aio_pwrite_smb2_done: file closed whilst " - "aio outstanding (mid[%llu]).\n", - (unsigned long long)aio_ex->smbreq->mid)); + DEBUG(3, ("%s: request cancelled (mid[%ju])\n", + __func__, (uintmax_t)aio_ex->smbreq->mid)); TALLOC_FREE(aio_ex); + tevent_req_nterror(subreq, NT_STATUS_INTERNAL_ERROR); return; } -- 1.9.1 From b99e9d2a439e4de93f39d81fac577d6fe1fb5bfa Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Fri, 17 Apr 2015 09:12:59 +0200 Subject: [PATCH 2/2] s3:smbd: update comment to correctly reflect MS-SMB2 https://bugzilla.samba.org/show_bug.cgi?id=11224 Signed-off-by: Ralph Boehme Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Wed Apr 22 01:04:02 CEST 2015 on sn-devel-104 (cherry picked from commit 64b038da31c7674410ef770f9c40a5402159fb57) --- source3/smbd/smb2_server.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c index ea2ce7f..53a38f9 100644 --- a/source3/smbd/smb2_server.c +++ b/source3/smbd/smb2_server.c @@ -1327,12 +1327,11 @@ NTSTATUS smbd_smb2_request_pending_queue(struct smbd_smb2_request *req, if (req->in.vector_count > req->current_idx + SMBD_SMB2_NUM_IOV_PER_REQ) { /* - * We're trying to go async in a compound - * request chain. - * This is only allowed for opens that - * cause an oplock break, otherwise it - * is not allowed. See [MS-SMB2].pdf - * note <194> on Section 3.3.5.2.7. + * We're trying to go async in a compound request + * chain. This is only allowed for opens that cause an + * oplock break or for the last operation in the + * chain, otherwise it is not allowed. See + * [MS-SMB2].pdf note <206> on Section 3.3.5.2.7. */ const uint8_t *inhdr = SMBD_SMB2_IN_HDR_PTR(req); -- 1.9.1