dpdk: fix flow(with mark action) deletion crash issue 25/28325/1
authorChenmin Sun <chenmin.sun@intel.com>
Mon, 20 Jan 2020 12:17:09 +0000 (20:17 +0800)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Wed, 12 Aug 2020 15:59:46 +0000 (15:59 +0000)
Type: fix

this patch fixes mark flow deletion crash issue, see below

test flow add src-ip any proto udp src-port 111 dst-port 222 mark 100
test flow enable index 0 1/1
test flow disable index 0 1/1
test flow enable index 0 1/1
test flow disable index 0 1/1 -> [crash]

This is because the code resets a wrong vector in flow lookup entry
recycle logic. See function dpdk_flow_ops_fn().

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I2b0a1e531931ab25541d672d88da18dc2289f1ce
(cherry picked from commit cd120f9bbb2101dfd7eca11d1a28e06ac5ace479)

src/plugins/dpdk/device/flow.c

index 0a8cc45..2b6b6c4 100644 (file)
@@ -267,7 +267,7 @@ dpdk_flow_ops_fn (vnet_main_t * vnm, vnet_flow_dev_op_t op, u32 dev_instance,
 
       vec_foreach (fl_index, xd->parked_lookup_indexes)
        pool_put_index (xd->flow_lookup_entries, *fl_index);
-      vec_reset_length (xd->flow_lookup_entries);
+      vec_reset_length (xd->parked_lookup_indexes);
     }
 
   if (op == VNET_FLOW_DEV_OP_DEL_FLOW)