1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

smbd: reuse close_free_pending_aio() in close_directory()

A directory fsp can have outstanding aio requests as well.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14301

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>

Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Mon Mar  9 19:34:27 UTC 2020 on sn-devel-184
This commit is contained in:
Ralph Boehme 2020-03-09 11:18:23 +01:00 committed by Jeremy Allison
parent f94cd10a21
commit 0ae4f368c6

View File

@ -1165,30 +1165,7 @@ static NTSTATUS close_directory(struct smb_request *req, files_struct *fsp,
notify_status = NT_STATUS_OK;
}
if (fsp->num_aio_requests != 0) {
if (close_type != SHUTDOWN_CLOSE) {
/*
* We panic here because if we close() the fd while we
* have outstanding async I/O requests, an async IO
* request might use the fd. For directories the fd is
* read-only, so this is not as bad as with files, but
* still, better safe then sorry.
*/
DBG_ERR("fsp->num_aio_requests=%u\n",
fsp->num_aio_requests);
smb_panic("close with outstanding aio requests");
return NT_STATUS_INTERNAL_ERROR;
}
while (fsp->num_aio_requests != 0) {
/*
* The destructor of the req will remove itself from the
* fsp. Don't use TALLOC_FREE here, this will overwrite
* what the destructor just wrote into aio_requests[0].
*/
talloc_free(fsp->aio_requests[0]);
}
}
close_free_pending_aio(fsp, close_type);
/*
* NT can set delete_on_close of the last open