From: Jeremy Allison Date: Fri, 13 Mar 2020 17:34:46 +0000 (-0700) Subject: Revert "vfs_default: Protect vfs_getxattrat_done() from accessing a freed req pointer" X-Git-Tag: ldb-2.2.0~1424 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1a52e63503907d53d140bbff57771d323d5a2e3d;p=thirdparty%2Fsamba.git Revert "vfs_default: Protect vfs_getxattrat_done() from accessing a freed req pointer" This reverts commit 95cfcda13fe9a70b9955a7c44173d619eacb34c1. 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 Reviewed-by: Ralph Boehme --- diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index cf24e66e048..bd39eb47e9a 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -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);