dpdk: fix flow(with mark action) deletion crash issue 40/24440/2
authorChenmin Sun <chenmin.sun@intel.com>
Mon, 20 Jan 2020 12:17:09 +0000 (20:17 +0800)
committerDamjan Marion <dmarion@me.com>
Fri, 14 Feb 2020 13:11:51 +0000 (13:11 +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

src/plugins/dpdk/device/flow.c

index d3ca435..85a62bb 100644 (file)
@@ -573,7 +573,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)