The branch, master has been updated via ddc1f3d Ensure we always free aio_ex on all error paths by moving the TALLOC_FREE call out of smbd_aio_complete_aio_ex() and into the caller. from f15cf91 Second part of fix for bug #8673 - NT ACL issue.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit ddc1f3df5183081aeb7c5b97b7fa4426c772346d Author: Jeremy Allison <j...@samba.org> Date: Wed Jan 11 16:37:48 2012 -0800 Ensure we always free aio_ex on all error paths by moving the TALLOC_FREE call out of smbd_aio_complete_aio_ex() and into the caller. Autobuild-User: Jeremy Allison <j...@samba.org> Autobuild-Date: Thu Jan 12 03:10:52 CET 2012 on sn-devel-104 ----------------------------------------------------------------------- Summary of changes: source3/modules/vfs_aio_fork.c | 1 + source3/modules/vfs_aio_pthread.c | 3 ++- source3/smbd/aio.c | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/modules/vfs_aio_fork.c b/source3/modules/vfs_aio_fork.c index 01eb97d..bcd7c6a 100644 --- a/source3/modules/vfs_aio_fork.c +++ b/source3/modules/vfs_aio_fork.c @@ -434,6 +434,7 @@ static void handle_aio_completion(struct event_context *event_ctx, aio_ex = (struct aio_extra *)child->aiocb->aio_sigevent.sigev_value.sival_ptr; smbd_aio_complete_aio_ex(aio_ex); + TALLOC_FREE(aio_ex); } static int aio_child_destructor(struct aio_child *child) diff --git a/source3/modules/vfs_aio_pthread.c b/source3/modules/vfs_aio_pthread.c index 82611b0..b6d4e1e 100644 --- a/source3/modules/vfs_aio_pthread.c +++ b/source3/modules/vfs_aio_pthread.c @@ -296,7 +296,7 @@ static void aio_pthread_handle_completion(struct event_context *event_ctx, DEBUG(10,("aio_pthread_handle_completion: jobid %d completed\n", jobid )); - + TALLOC_FREE(aio_ex); } /************************************************************************ @@ -424,6 +424,7 @@ static void aio_pthread_handle_immediate(struct tevent_context *ctx, TALLOC_FREE(pjobid); aio_ex = (struct aio_extra *)pd->aiocb->aio_sigevent.sigev_value.sival_ptr; smbd_aio_complete_aio_ex(aio_ex); + TALLOC_FREE(aio_ex); } /************************************************************************ diff --git a/source3/smbd/aio.c b/source3/smbd/aio.c index 07b8388..44081f6 100644 --- a/source3/smbd/aio.c +++ b/source3/smbd/aio.c @@ -67,6 +67,7 @@ static void smbd_aio_signal_handler(struct tevent_context *ev_ctx, info->si_value.sival_ptr; smbd_aio_complete_aio_ex(aio_ex); + TALLOC_FREE(aio_ex); } @@ -931,8 +932,6 @@ void smbd_aio_complete_aio_ex(struct aio_extra *aio_ex) if (!handle_aio_completed(aio_ex, &ret)) { return; } - - TALLOC_FREE(aio_ex); } /**************************************************************************** -- Samba Shared Repository