Do anyone sees any issue with this change ? Though it does not address any 
existing bug, but will make the code less error prone. 

Regards,
Vishal

-----Original Message-----
From: [email protected] [mailto:[email protected]] 
On Behalf Of Vishal Deep Ajmera
Sent: Thursday, November 16, 2017 11:32 AM
To: [email protected]
Subject: [ovs-dev] [PATCH v2] odp-execute: Skip processing actions when batch 
is emptied

Today in OVS, when errors are encountered during the execution of an action the 
entire batch of packets may be deleted (for e.g. in processing push_tnl_action, 
if the port is not found in the port_cache of PMD). The remaining actions 
continue to be executed even though there are no packets to be processed.
It is assumed that the code dealing with each action checks that the batch is 
not empty before executing. Crashes may occur if the assumption is not met.

The patch makes OVS skip processing of further actions from the action-set once 
a batch is emptied. Doing so centralizes the check in one place and avoids the 
possibility of crashes.

Signed-off-by: Vishal Deep Ajmera <[email protected]>
---
lib/odp-execute.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/lib/odp-execute.c b/lib/odp-execute.c index 3011479..887246d 100644
--- a/lib/odp-execute.c
+++ b/lib/odp-execute.c
@@ -686,9 +686,12 @@ odp_execute_actions(void *dp, struct dp_packet_batch 
*batch, bool steal,

                 dp_execute_action(dp, batch, a, may_steal);

-                if (last_action) {
-                    /* We do not need to free the packets. dp_execute_actions()
-                     * has stolen them */
+                if (last_action || (batch->count == 0)) {
+                    /* We do not need to free the packets.
+                     * Either dp_execute_actions() has stolen them
+                     * or the batch is freed due to errors. In either
+                     * case we do not need to execute further actions.
+                     */
                     return;
                 }
             }
--
1.9.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to