Skip to content

Commit

Permalink
ovsdb-idl: Fix memory leak of ovsdb_idl_db_clear.
Browse files Browse the repository at this point in the history
ovsdb_idl_row_destroy() doesn't free the memory of row structure itself.
This is because of the ovsdb change tracking feature: the deleted row
may be accessed in the current iteration of main loop. The function
ovsdb_idl_row_destroy_postprocess() is called at the end of
ovsdb_idl_run() to free the deleted rows that are not tracked; the
function ovsdb_idl_db_track_clear() is called (indirectly) by user
at the end of each main loop iteration to free the deleted rows that
are tracked. However, in ovsdb_idl_db_clear(), which may be called when
a session is reset, or when the idl is destroyed, it didn't call
ovsdb_idl_row_destroy_postprocess(), which would result in all the
untracked rows leaked. This patch fixes that.

Signed-off-by: Han Zhou <[email protected]>
Signed-off-by: Ben Pfaff <[email protected]>
  • Loading branch information
hzhou8 authored and blp committed Mar 8, 2019
1 parent 2cd62f7 commit ea11bb0
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions lib/ovsdb-idl.c
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,7 @@ ovsdb_idl_db_clear(struct ovsdb_idl_db *db)
ovsdb_idl_row_destroy(row);
}
}
ovsdb_idl_row_destroy_postprocess(db);

db->cond_changed = false;
db->cond_seqno = 0;
Expand Down

0 comments on commit ea11bb0

Please sign in to comment.