From: Andrew Tridgell Date: Fri, 7 Aug 2009 07:14:13 +0000 (+1000) Subject: fixed several places that unnecessarily take a reference to the event context X-Git-Tag: talloc-2.0.0~464^2~35 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e2d4ae15107c8613707adc68ffc68c6ced04e9be;p=thirdparty%2Fsamba.git fixed several places that unnecessarily take a reference to the event context These references were triggering the ambiguous talloc_free errors from the recent talloc changes when the server is run using the 'standard' process model instead of the 'single' process model. I am aiming to move the build farm to use the 'standard' process model soon, as part of an effort to make our test environment better match the real deployment of Samba4. The references are not needed as the way that the event context is used is as the 'top parent', so when the event context is freed then all of the structures that were taking a reference to the event context were actually freed as well, thus making the references redundent. --- diff --git a/source4/dsdb/samdb/ldb_modules/samldb.c b/source4/dsdb/samdb/ldb_modules/samldb.c index 544249cbe39..037d5c9e678 100644 --- a/source4/dsdb/samdb/ldb_modules/samldb.c +++ b/source4/dsdb/samdb/ldb_modules/samldb.c @@ -244,10 +244,6 @@ static int samldb_search_template(struct samldb_ctx *ac) return LDB_ERR_OPERATIONS_ERROR; } - if (!talloc_reference(templates_ldb, ev)) { - return LDB_ERR_OPERATIONS_ERROR; - } - ret = ldb_set_opaque(ldb, "templates_ldb", templates_ldb); if (ret != LDB_SUCCESS) { diff --git a/source4/lib/messaging/messaging.c b/source4/lib/messaging/messaging.c index cfceeffac71..277688e8b6a 100644 --- a/source4/lib/messaging/messaging.c +++ b/source4/lib/messaging/messaging.c @@ -596,7 +596,7 @@ struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx, /* it needs to be non blocking for sends */ set_blocking(socket_get_fd(msg->sock), false); - msg->event.ev = talloc_reference(msg, ev); + msg->event.ev = ev; msg->event.fde = event_add_fd(ev, msg, socket_get_fd(msg->sock), EVENT_FD_READ, messaging_handler, msg); diff --git a/source4/libcli/composite/composite.c b/source4/libcli/composite/composite.c index ab32175d00e..7262ebce54d 100644 --- a/source4/libcli/composite/composite.c +++ b/source4/libcli/composite/composite.c @@ -42,11 +42,7 @@ _PUBLIC_ struct composite_context *composite_create(TALLOC_CTX *mem_ctx, c = talloc_zero(mem_ctx, struct composite_context); if (!c) return NULL; c->state = COMPOSITE_STATE_IN_PROGRESS; - c->event_ctx = talloc_reference(c, ev); - if (!c->event_ctx) { - talloc_free(c); - return NULL; - } + c->event_ctx = ev; return c; } diff --git a/source4/libcli/dgram/dgramsocket.c b/source4/libcli/dgram/dgramsocket.c index 751706d2c55..365960edb6d 100644 --- a/source4/libcli/dgram/dgramsocket.c +++ b/source4/libcli/dgram/dgramsocket.c @@ -166,7 +166,7 @@ struct nbt_dgram_socket *nbt_dgram_socket_init(TALLOC_CTX *mem_ctx, dgmsock = talloc(mem_ctx, struct nbt_dgram_socket); if (dgmsock == NULL) goto failed; - dgmsock->event_ctx = talloc_reference(dgmsock, event_ctx); + dgmsock->event_ctx = event_ctx; if (dgmsock->event_ctx == NULL) goto failed; status = socket_create("ip", SOCKET_TYPE_DGRAM, &dgmsock->sock, 0); diff --git a/source4/libcli/raw/clisocket.c b/source4/libcli/raw/clisocket.c index b9e83218ddd..02da4917e31 100644 --- a/source4/libcli/raw/clisocket.c +++ b/source4/libcli/raw/clisocket.c @@ -61,7 +61,7 @@ struct composite_context *smbcli_sock_connect_send(TALLOC_CTX *mem_ctx, if (result == NULL) goto failed; result->state = COMPOSITE_STATE_IN_PROGRESS; - result->event_ctx = talloc_reference(result, event_ctx); + result->event_ctx = event_ctx; if (result->event_ctx == NULL) goto failed; state = talloc(result, struct sock_connect_state); @@ -118,8 +118,7 @@ static void smbcli_sock_connect_recv_conn(struct composite_context *ctx) state->result->port = port; state->result->hostname = talloc_steal(sock, state->host_name); - state->result->event.ctx = - talloc_reference(state->result, state->ctx->event_ctx); + state->result->event.ctx = state->ctx->event_ctx; if (composite_nomem(state->result->event.ctx, state->ctx)) return; composite_done(state->ctx); diff --git a/source4/libcli/smb_composite/connect.c b/source4/libcli/smb_composite/connect.c index a5d05b7af14..9a19771bc0f 100644 --- a/source4/libcli/smb_composite/connect.c +++ b/source4/libcli/smb_composite/connect.c @@ -466,7 +466,7 @@ struct composite_context *smb_composite_connect_send(struct smb_composite_connec c = talloc_zero(mem_ctx, struct composite_context); if (c == NULL) goto failed; - c->event_ctx = talloc_reference(c, event_ctx); + c->event_ctx = event_ctx; if (c->event_ctx == NULL) goto failed; state = talloc_zero(c, struct connect_state); diff --git a/source4/libcli/wrepl/winsrepl.c b/source4/libcli/wrepl/winsrepl.c index 48a6abba9d0..849511b6065 100644 --- a/source4/libcli/wrepl/winsrepl.c +++ b/source4/libcli/wrepl/winsrepl.c @@ -171,7 +171,7 @@ struct wrepl_socket *wrepl_socket_init(TALLOC_CTX *mem_ctx, wrepl_socket = talloc_zero(mem_ctx, struct wrepl_socket); if (!wrepl_socket) return NULL; - wrepl_socket->event.ctx = talloc_reference(wrepl_socket, event_ctx); + wrepl_socket->event.ctx = event_ctx; if (!wrepl_socket->event.ctx) goto failed; wrepl_socket->iconv_convenience = iconv_convenience; @@ -205,7 +205,7 @@ struct wrepl_socket *wrepl_socket_merge(TALLOC_CTX *mem_ctx, wrepl_socket = talloc_zero(mem_ctx, struct wrepl_socket); if (wrepl_socket == NULL) goto failed; - wrepl_socket->event.ctx = talloc_reference(wrepl_socket, event_ctx); + wrepl_socket->event.ctx = event_ctx; if (wrepl_socket->event.ctx == NULL) goto failed; wrepl_socket->sock = sock; diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c index 0ae56a470e5..cc1331984d2 100644 --- a/source4/librpc/rpc/dcerpc.c +++ b/source4/librpc/rpc/dcerpc.c @@ -67,7 +67,7 @@ static struct dcerpc_connection *dcerpc_connection_init(TALLOC_CTX *mem_ctx, c->iconv_convenience = talloc_reference(c, ic); - c->event_ctx = talloc_reference(c, ev); + c->event_ctx = ev; if (c->event_ctx == NULL) { talloc_free(c); diff --git a/source4/nbt_server/wins/winswack.c b/source4/nbt_server/wins/winswack.c index c53fa1d069a..a58362830ac 100644 --- a/source4/nbt_server/wins/winswack.c +++ b/source4/nbt_server/wins/winswack.c @@ -94,7 +94,7 @@ struct composite_context *wins_challenge_send(TALLOC_CTX *mem_ctx, struct wins_c result = talloc_zero(mem_ctx, struct composite_context); if (result == NULL) return NULL; result->state = COMPOSITE_STATE_IN_PROGRESS; - result->event_ctx = talloc_reference(result, io->in.event_ctx); + result->event_ctx = io->in.event_ctx; state = talloc_zero(result, struct wins_challenge_state); if (state == NULL) goto failed; @@ -204,7 +204,7 @@ static struct composite_context *wins_release_demand_send(TALLOC_CTX *mem_ctx, s result = talloc_zero(mem_ctx, struct composite_context); if (result == NULL) return NULL; result->state = COMPOSITE_STATE_IN_PROGRESS; - result->event_ctx = talloc_reference(result, io->in.event_ctx); + result->event_ctx = io->in.event_ctx; state = talloc_zero(result, struct wins_release_demand_state); if (state == NULL) goto failed;