summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChenmin Sun <chenmin.sun@intel.com>2019-11-22 05:33:40 +0800
committerAndrew Yourtchenko <ayourtch@gmail.com>2020-08-12 07:43:03 +0000
commitcb3edd53e8ba606245c9965a374f7719d4367a60 (patch)
tree7feeb5b3b1cb5820f497c7b10031c29b61753f66 /src
parentcd3a7c96464aca67ab45117db740d56b091666ff (diff)
flow: fix several crash issues
Type: fix This patch fixes crash issues(marked in brackets) in the below test cases test flow enable index 0 1/1 -> [crash] test flow disable index 0 1/1 -> [crash] test flow add src-ip 192.168.8.8 proto udp redirect-to-queue 8 test flow enable index 0 1/1 test flow disable index 0 1/1 - [crash] test flow add src-ip 192.168.8.8 proto udp redirect-to-queue 8 test flow enable index 0 1/1 test flow enable index 0 1/2 test flow del index 0 -> [crash] Signed-off-by: Chenmin Sun <chenmin.sun@intel.com> Change-Id: I84bc6faa3d93a2cab4c82e8a876a8b1067257b62 (cherry picked from commit be2ad0b4743ed8a3875a5b6039c10c66eb07614c)
Diffstat (limited to 'src')
-rw-r--r--src/plugins/dpdk/device/flow.c2
-rw-r--r--src/vnet/flow/flow.c6
2 files changed, 6 insertions, 2 deletions
diff --git a/src/plugins/dpdk/device/flow.c b/src/plugins/dpdk/device/flow.c
index 1b8b5906b1c..0a8cc4573bc 100644
--- a/src/plugins/dpdk/device/flow.c
+++ b/src/plugins/dpdk/device/flow.c
@@ -272,8 +272,6 @@ dpdk_flow_ops_fn (vnet_main_t * vnm, vnet_flow_dev_op_t op, u32 dev_instance,
if (op == VNET_FLOW_DEV_OP_DEL_FLOW)
{
- ASSERT (*private_data >= vec_len (xd->flow_entries));
-
fe = vec_elt_at_index (xd->flow_entries, *private_data);
if ((rv = rte_flow_destroy (xd->device_index, fe->handle,
diff --git a/src/vnet/flow/flow.c b/src/vnet/flow/flow.c
index 4d867fee365..9b6a376af3e 100644
--- a/src/vnet/flow/flow.c
+++ b/src/vnet/flow/flow.c
@@ -96,6 +96,9 @@ vnet_flow_enable (vnet_main_t * vnm, u32 flow_index, u32 hw_if_index)
uword private_data;
int rv;
+ if (f == 0)
+ return VNET_FLOW_ERROR_NO_SUCH_ENTRY;
+
if (!vnet_hw_interface_is_valid (vnm, hw_if_index))
return VNET_FLOW_ERROR_NO_SUCH_INTERFACE;
@@ -137,6 +140,9 @@ vnet_flow_disable (vnet_main_t * vnm, u32 flow_index, u32 hw_if_index)
uword *p;
int rv;
+ if (f == 0)
+ return VNET_FLOW_ERROR_NO_SUCH_ENTRY;
+
if (!vnet_hw_interface_is_valid (vnm, hw_if_index))
return VNET_FLOW_ERROR_NO_SUCH_INTERFACE;