diff options
author | Ilya Maximets <i.maximets@ovn.org> | 2020-05-04 21:55:41 +0200 |
---|---|---|
committer | William Tu <u9012063@gmail.com> | 2020-05-05 07:23:15 -0700 |
commit | 4f14b59a09199be6f00daeb9a6335d05207e0636 (patch) | |
tree | 309f83174fb2f2f8fa57d9c191c8a67b81c71b2c | |
parent | 33b15fba25fbeff1fa7b234bca0c6d67ce21dae7 (diff) | |
download | openvswitch-4f14b59a09199be6f00daeb9a6335d05207e0636.tar.gz |
raft: Fix leak of the incomplete command.
Function raft_command_initiate() returns correctly referenced command
instance. 'n_ref' equals 1 for complete commands and 2 for incomplete
commands because one more reference is in raft->commands list.
raft_handle_execute_command_request__() leaks the reference by not
returning pointer anywhere and not unreferencing incomplete commands.
792 bytes in 11 blocks are definitely lost in loss record 258 of 262
at 0x483BB1A: calloc (vg_replace_malloc.c:762)
by 0x44BA32: xcalloc (util.c:121)
by 0x422E5F: raft_command_create_incomplete (raft.c:2038)
by 0x422E5F: raft_command_initiate (raft.c:2061)
by 0x428651: raft_handle_execute_command_request__ (raft.c:4161)
by 0x428651: raft_handle_execute_command_request (raft.c:4177)
by 0x428651: raft_handle_rpc (raft.c:4230)
by 0x428651: raft_conn_run (raft.c:1445)
by 0x428DEA: raft_run (raft.c:1803)
by 0x407392: main_loop (ovsdb-server.c:226)
by 0x407392: main (ovsdb-server.c:469)
Fixes: 1b1d2e6daa56 ("ovsdb: Introduce experimental support for clustered databases.")
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Acked-by: Han Zhou <hzhou@ovn.org>
Signed-off-by: William Tu <u9012063@gmail.com>
-rw-r--r-- | ovsdb/raft.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/ovsdb/raft.c b/ovsdb/raft.c index 6452182ba..150581413 100644 --- a/ovsdb/raft.c +++ b/ovsdb/raft.c @@ -4163,9 +4163,7 @@ raft_handle_execute_command_request__( cmd->sid = rq->common.sid; enum raft_command_status status = cmd->status; - if (status != RAFT_CMD_INCOMPLETE) { - raft_command_unref(cmd); - } + raft_command_unref(cmd); return status; } |