diff --git a/dp-core/vr_flow.c b/dp-core/vr_flow.c index 051c2b2f2..9f428fe64 100644 --- a/dp-core/vr_flow.c +++ b/dp-core/vr_flow.c @@ -679,7 +679,9 @@ vr_flow_mark_evict(struct vrouter *router, struct vr_flow_entry *fe) /* no modification. hence...*/ rfe = NULL; } else { - if ((rfe->fe_rflow == index) || (rfe->fe_rflow < 0)) { + /* we do not want hold flows to be evicted, just yet */ + if (((rfe->fe_rflow == index) || (rfe->fe_rflow < 0)) && + (rfe->fe_action != VR_FLOW_ACTION_HOLD)) { evict_forward_flow = __vr_flow_mark_evict(router, rfe); } } diff --git a/dp-core/vrouter.c b/dp-core/vrouter.c index e1e5e4753..a90fa66bd 100644 --- a/dp-core/vrouter.c +++ b/dp-core/vrouter.c @@ -256,7 +256,7 @@ vrouter_ops_destroy(vrouter_ops *req) req->vo_build_info = NULL; } - vr_free(req->vo_build_info); + vr_free(req); return; }