[ovs-dev] [PATCH] ovs-vsctl: Prevent double-free when retrying a transaction

Justin Pettit jpettit at nicira.com
Sat Oct 23 00:54:34 UTC 2010


And ship it I did.  Thanks.

--Justin


On Oct 22, 2010, at 5:51 PM, Ethan Jackson wrote:

> 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