]> git.proxmox.com Git - ovs.git/commitdiff
ovsdb-idl: Fix memory leak
authorYifeng Sun <pkusunyifeng@gmail.com>
Tue, 31 Oct 2017 17:52:08 +0000 (10:52 -0700)
committerBen Pfaff <blp@ovn.org>
Thu, 2 Nov 2017 21:17:20 +0000 (14:17 -0700)
Valgrind testcase 2339 (ovn -- ipam connectivity) reports the leak below:
45 (32 direct, 13 indirect) bytes in 1 blocks are definitely lost in loss record 65 of 83
    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    by 0x4A6D64: xmalloc (util.c:120)
    by 0x49C847: shash_add_nocopy__ (shash.c:109)
    by 0x49C847: shash_add_nocopy (shash.c:121)
    by 0x49CA85: shash_add (shash.c:129)
    by 0x49CA85: shash_add_once (shash.c:136)
    by 0x4914B5: ovsdb_idl_create_index (ovsdb-idl.c:2067)
    by 0x406C98: create_ovnsb_indexes (ovn-controller.c:568)
    by 0x406C98: main (ovn-controller.c:619)

The leak happens when vsdb_idl_table is freed but its indexes are not freed.

Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
lib/ovsdb-idl.c

index 5617e08d633cc6ab02430f06bf9c02c15024138e..be29c92957c0c89081ace88626572776886c0460 100644 (file)
@@ -2163,6 +2163,7 @@ ovsdb_idl_destroy_indexes(struct ovsdb_idl_table *table)
         skiplist_destroy(index->skiplist, NULL);
         free(index->columns);
     }
+    shash_destroy_free_data(&table->indexes);
 }
 
 static void