From: Han Zhou <[email protected]> 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]> --- lib/ovsdb-idl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c index 49fd45c..2af123b 100644 --- a/lib/ovsdb-idl.c +++ b/lib/ovsdb-idl.c @@ -616,6 +616,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; -- 2.1.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
