]> git.proxmox.com Git - ovs.git/commitdiff
ovsdb-client: fix memory leak to prevent valgrind reporting memory leaks while runnin...
authorDamijan Skvarc <damjan.skvarc@gmail.com>
Wed, 2 Oct 2019 09:37:52 +0000 (11:37 +0200)
committerBen Pfaff <blp@ovn.org>
Wed, 2 Oct 2019 14:48:07 +0000 (07:48 -0700)
memory leaks are reported in several tests and are expressed in a following way:

==29840== 208 (48 direct, 160 indirect) bytes in 1 blocks are definitely lost in
 loss record 43 of 44
==29840==    at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64
-linux.so)
==29840==    by 0x449D12: xcalloc (util.c:121)
==29840==    by 0x432949: jsonrpc_msg_from_json (jsonrpc.c:697)
==29840==    by 0x432A8F: jsonrpc_parse_received_message (jsonrpc.c:472)
==29840==    by 0x432A8F: jsonrpc_recv.part.7 (jsonrpc.c:338)
==29840==    by 0x4338F7: jsonrpc_recv (jsonrpc.c:1139)
==29840==    by 0x4338F7: jsonrpc_session_recv (jsonrpc.c:1112)
==29840==    by 0x40719B: do_wait (ovsdb-client.c:2463)
==29840==    by 0x405F76: main (ovsdb-client.c:282)

Signed-off-by: Damijan Skvarc <damjan.skvarc@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
ovsdb/ovsdb-client.c

index e88e828cb9f6d411963282674e730dcdc78fe154..88784628c1fb0d8cb1285a5f3d0f7b6afbecf213 100644 (file)
@@ -2468,12 +2468,15 @@ do_wait(struct jsonrpc *rpc_unused OVS_UNUSED,
         if (reply && reply->id) {
             if (sdca_id && json_equal(sdca_id, reply->id)) {
                 if (reply->type == JSONRPC_ERROR) {
-                    ovs_fatal(0, "%s: set_db_change_aware failed (%s)",
+                    ovs_error(0, "%s: set_db_change_aware failed (%s)",
                               jsonrpc_session_get_name(js),
                               json_to_string(reply->error, 0));
+                    jsonrpc_msg_destroy(reply);
+                    exit(EXIT_FAILURE);
                 }
             } else if (txn_id && json_equal(txn_id, reply->id)) {
                 check_transaction_reply(reply);
+                jsonrpc_msg_destroy(reply);
                 exit(0);
             }
         }