[ovs-dev] [leaks 2/5] Fix minor memory leaks found by valgrind.
Ben Pfaff
blp at nicira.com
Wed Mar 28 14:58:31 PDT 2012
All of these leaks are in normally short-lived programs, so none of them
is very important.
Signed-off-by: Ben Pfaff <blp at nicira.com>
---
lib/ovsdb-data.c | 3 ++-
ovsdb/ovsdb-client.c | 9 +++++++++
ovsdb/ovsdb-tool.c | 4 ++++
utilities/ovs-ofctl.c | 3 +++
utilities/ovs-vsctl.c | 3 +++
5 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/lib/ovsdb-data.c b/lib/ovsdb-data.c
index bb8781c..d978718 100644
--- a/lib/ovsdb-data.c
+++ b/lib/ovsdb-data.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009, 2010, 2011 Nicira Networks
+/* Copyright (c) 2009, 2010, 2011, 2012 Nicira Networks
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -590,6 +590,7 @@ ovsdb_atom_from_string(union ovsdb_atom *atom,
error = ovsdb_atom_check_constraints(atom, base);
if (error) {
+ ovsdb_atom_destroy(atom, base->type);
msg = ovsdb_error_to_string(error);
ovsdb_error_destroy(error);
}
diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c
index 53da6ae..077e3a8 100644
--- a/ovsdb/ovsdb-client.c
+++ b/ovsdb/ovsdb-client.c
@@ -885,10 +885,15 @@ dump_table(const struct ovsdb_table_schema *ts, struct json_array *rows)
struct cell *cell = table_add_cell(&t);
cell->json = ovsdb_datum_to_json(&data[y][x], &columns[x]->type);
cell->type = &columns[x]->type;
+ ovsdb_datum_destroy(&data[y][x], &columns[x]->type);
}
+ free(data[y]);
}
table_print(&t, &table_style);
table_destroy(&t);
+
+ free(data);
+ free(columns);
}
static void
@@ -957,6 +962,10 @@ do_dump(struct jsonrpc *rpc, const char *database,
dump_table(ts, &rows->u.array);
}
+
+ jsonrpc_msg_destroy(reply);
+ free(tables);
+ ovsdb_schema_destroy(schema);
}
static void
diff --git a/ovsdb/ovsdb-tool.c b/ovsdb/ovsdb-tool.c
index ecf998b..e83b49a 100644
--- a/ovsdb/ovsdb-tool.c
+++ b/ovsdb/ovsdb-tool.c
@@ -252,6 +252,10 @@ compact_or_convert(const char *src_name, const char *dst_name,
}
lockfile_unlock(dst_lock);
+
+ if (in_place) {
+ free((char *) dst_name);
+ }
}
static void
diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c
index 3e9f462..2b91a28 100644
--- a/utilities/ovs-ofctl.c
+++ b/utilities/ovs-ofctl.c
@@ -363,6 +363,7 @@ dump_transaction(const char *vconn_name, struct ofpbuf *request)
open_vconn(vconn_name, &vconn);
run(vconn_transact(vconn, request, &reply), "talking to %s", vconn_name);
ofp_print(stdout, reply->data, reply->size, verbosity + 1);
+ ofpbuf_delete(reply);
vconn_close(vconn);
}
@@ -1135,6 +1136,7 @@ do_packet_out(int argc, char *argv[])
ofpbuf_delete(packet);
}
vconn_close(vconn);
+ ofpbuf_uninit(&actions);
}
static void
@@ -1413,6 +1415,7 @@ fte_free_all(struct classifier *cls)
classifier_remove(cls, &fte->rule);
fte_free(fte);
}
+ classifier_destroy(cls);
}
/* Searches 'cls' for an FTE matching 'rule', inserting a new one if
diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c
index 0caf57e..d752a54 100644
--- a/utilities/ovs-vsctl.c
+++ b/utilities/ovs-vsctl.c
@@ -1370,6 +1370,7 @@ cmd_add_br(struct vsctl_context *ctx)
br_name, parent_name, vlan, br_name, br->vlan);
}
}
+ free_info(&info);
return;
}
}
@@ -1730,6 +1731,7 @@ add_port(struct vsctl_context *ctx,
svec_destroy(&want_names);
svec_destroy(&have_names);
+ free_info(&info);
return;
}
@@ -3540,6 +3542,7 @@ is_condition_satisfied(const struct vsctl_table_class *table,
}
ovsdb_atom_destroy(&want_key, column->type.key.type);
+ ovsdb_datum_destroy(&b, &type);
} else {
struct ovsdb_datum want_datum;
--
1.7.2.5
More information about the dev
mailing list