From 99647cd78c2165c9c6c8390e86ce4604996c2086 Mon Sep 17 00:00:00 2001 From: Hari Date: Fri, 27 Nov 2015 14:55:02 +0530 Subject: [PATCH] Ensure vrouter_evicted_flow flag is not overwritten. Assert only if the flow is not evicted. Change-Id: I8a805a04750f78e87d717567e931fc0510e52cb9 closes-bug: 1520494 --- src/vnsw/agent/pkt/flow_table.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/vnsw/agent/pkt/flow_table.cc b/src/vnsw/agent/pkt/flow_table.cc index 6e89d96199d..ffd4846c851 100644 --- a/src/vnsw/agent/pkt/flow_table.cc +++ b/src/vnsw/agent/pkt/flow_table.cc @@ -507,7 +507,7 @@ void FlowTable::DeleteByIndex(uint32_t flow_handle, FlowEntry *fe) { if (flow_handle != FlowEntry::kInvalidFlowHandle) { if (flow_index_tree_[flow_handle].get() == fe) { flow_index_tree_[flow_handle] = NULL; - } else { + } else if (fe->data().vrouter_evicted_flow == false) { assert(0); } } @@ -882,9 +882,10 @@ void FlowTable::UpdateKSync(FlowEntry *flow, bool update) { //Actual msg would not be sent to kernel if (update == false) { if (flow->ksync_entry() != NULL) { + bool vrouter_evicted_flow = flow->data().vrouter_evicted_flow; flow->data().vrouter_evicted_flow = true; ksync_object_->Delete(flow->ksync_entry()); - flow->data().vrouter_evicted_flow = false; + flow->data().vrouter_evicted_flow = vrouter_evicted_flow; flow->set_ksync_entry(NULL); } }