[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