[ovs-dev] [PATCH] ovs-vsctl: Prevent double-free when retrying a transaction
Ethan Jackson
ethan at nicira.com
Sat Oct 23 00:51:11 UTC 2010
Ship it
On Fri, Oct 22, 2010 at 17:49, Justin Pettit <jpettit at nicira.com> wrote:
> ---
> utilities/ovs-vsctl.c | 8 +++++---
> 1 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c
> index 1585fae..c4f628e 100644
> --- a/utilities/ovs-vsctl.c
> +++ b/utilities/ovs-vsctl.c
> @@ -2838,7 +2838,7 @@ do_vsctl(const char *args, struct vsctl_command *commands, size_t n_commands,
> }
> error = xstrdup(ovsdb_idl_txn_get_error(txn));
> ovsdb_idl_txn_destroy(txn);
> - the_idl_txn = NULL;
> + txn = the_idl_txn = NULL;
>
> unused = ovsdb_symbol_table_find_unused(symtab);
> if (unused) {
> @@ -2927,8 +2927,10 @@ do_vsctl(const char *args, struct vsctl_command *commands, size_t n_commands,
> try_again:
> /* Our transaction needs to be rerun, or a prerequisite was not met. Free
> * resources and return so that the caller can try again. */
> - ovsdb_idl_txn_abort(txn);
> - ovsdb_idl_txn_destroy(txn);
> + if (txn) {
> + ovsdb_idl_txn_abort(txn);
> + ovsdb_idl_txn_destroy(txn);
> + }
> ovsdb_symbol_table_destroy(symtab);
> for (c = commands; c < &commands[n_commands]; c++) {
> ds_destroy(&c->output);
> --
> 1.7.1
>
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev_openvswitch.org
>
More information about the dev
mailing list