diff mbox

[ovs-dev,1/2] ovsdb-client: fix memory leak reported by valgrind

Message ID 1452210789-23370-1-git-send-email-u9012063@gmail.com
State Accepted
Headers show

Commit Message

William Tu Jan. 7, 2016, 11:53 p.m. UTC
test case 1427: ovsdb-server combines updates on backlogged connections.
    ovsdb_column_set_add (column.c:233)
    add_column (ovsdb-client.c:730)
    parse_monitor_columns (ovsdb-client.c:787)
    add_monitored_table (ovsdb-client.c:872)
    do_monitor__ (ovsdb-client.c:945)

Reported-by: William Tu <u9012063@gmail.com>
Reported-at: http://openvswitch.org/pipermail/dev/2016-January/064161.html
Signed-off-by: Andy Zhou <azhou@ovn.org>
---
 ovsdb/ovsdb-client.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Ben Pfaff Jan. 11, 2016, 5:06 p.m. UTC | #1
On Thu, Jan 07, 2016 at 03:53:08PM -0800, William Tu wrote:
> test case 1427: ovsdb-server combines updates on backlogged connections.
>     ovsdb_column_set_add (column.c:233)
>     add_column (ovsdb-client.c:730)
>     parse_monitor_columns (ovsdb-client.c:787)
>     add_monitored_table (ovsdb-client.c:872)
>     do_monitor__ (ovsdb-client.c:945)
> 
> Reported-by: William Tu <u9012063@gmail.com>
> Reported-at: http://openvswitch.org/pipermail/dev/2016-January/064161.html
> Signed-off-by: Andy Zhou <azhou@ovn.org>

Applied to master, thanks!
diff mbox

Patch

diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c
index 9a6f3e9..7a33ef8 100644
--- a/ovsdb/ovsdb-client.c
+++ b/ovsdb/ovsdb-client.c
@@ -879,6 +879,19 @@  add_monitored_table(int argc, char *argv[],
 }
 
 static void
+destroy_monitored_table(struct monitored_table *mts, size_t n)
+{
+    int i;
+
+    for (i = 0; i < n; i++) {
+        struct monitored_table *mt = &mts[i];
+        ovsdb_column_set_destroy(&mt->columns);
+    }
+
+    free(mts);
+}
+
+static void
 do_monitor__(struct jsonrpc *rpc, const char *database,
              enum ovsdb_monitor_version version,
              int argc, char *argv[])
@@ -1025,6 +1038,7 @@  do_monitor__(struct jsonrpc *rpc, const char *database,
         poll_block();
     }
     ovsdb_schema_destroy(schema);
+    destroy_monitored_table(mts, n_mts);
 }
 
 static void