1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

Revert "vfs_default: Protect vfs_getxattrat_done() from accessing a freed req pointer"

This reverts commit 95cfcda13f.

Now we wait for all aio to finish on all SHUTDOWN_CLOSE
cases, this is no longer needed.

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

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
This commit is contained in:
Jeremy Allison 2020-03-13 10:34:46 -07:00
parent 584933439c
commit 1a52e63503

View File

@ -3289,15 +3289,6 @@ struct vfswrap_getxattrat_state {
static int vfswrap_getxattrat_state_destructor(
struct vfswrap_getxattrat_state *state)
{
/*
* This destructor only gets called if the request is still
* in flight, which is why we deny it by returning -1. We
* also set the req pointer to NULL so the _done function
* can detect the caller doesn't want the result anymore.
*
* Forcing the fsp closed by a SHUTDOWN_CLOSE can cause this.
*/
state->req = NULL;
return -1;
}
@ -3528,16 +3519,6 @@ static void vfswrap_getxattrat_done(struct tevent_req *subreq)
TALLOC_FREE(subreq);
SMBPROFILE_BYTES_ASYNC_END(state->profile_bytes);
talloc_set_destructor(state, NULL);
if (req == NULL) {
/*
* We were shutdown closed in flight. No one wants the result,
* and state has been reparented to the NULL context, so just
* free it so we don't leak memory.
*/
DBG_NOTICE("getxattr request abandoned in flight\n");
TALLOC_FREE(state);
return;
}
if (ret != 0) {
if (ret != EAGAIN) {
tevent_req_error(req, ret);