Last commit 738a2445c0 introduced a bug where the mask list of
a flow table was freed even when the table's flows and mask list is
reused by another table.

Bug #32932

Reported-by: Len Gao <l...@vmware.com>
Signed-off-by: Andy Zhou <az...@nicira.com>
---
 datapath/flow.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/datapath/flow.c b/datapath/flow.c
index b9ad608..2e46866 100644
--- a/datapath/flow.c
+++ b/datapath/flow.c
@@ -502,8 +502,10 @@ static struct flow_table *__flow_tbl_alloc(int new_size)
 
 static void __flow_tbl_destroy(struct flow_table *table)
 {
-       BUG_ON(!list_empty(table->mask_list));
-       kfree(table->mask_list);
+       if (!table->keep_flows) {
+               BUG_ON(!list_empty(table->mask_list));
+               kfree(table->mask_list);
+       }
 
        free_buckets(table->buckets);
        kfree(table);
-- 
1.7.9.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to