net/ice: fix deadlock on flow redirect
authorDapeng Yu <dapengx.yu@intel.com>
Mon, 11 Oct 2021 07:38:49 +0000 (15:38 +0800)
committerQi Zhang <qi.z.zhang@intel.com>
Wed, 13 Oct 2021 10:53:28 +0000 (12:53 +0200)
If flow redirect failed, the spinlock will not be unlocked.
This patch fixes it.

Fixes: bc9201388d56 ("net/ice: support flow redirect")
Cc: stable@dpdk.org
Signed-off-by: Dapeng Yu <dapengx.yu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
drivers/net/ice/ice_generic_flow.c

index 3e6ed70..02f8546 100644 (file)
@@ -2542,7 +2542,7 @@ ice_flow_redirect(struct ice_adapter *ad,
        struct ice_pf *pf = &ad->pf;
        struct rte_flow *p_flow;
        void *temp;
-       int ret;
+       int ret = 0;
 
        rte_spinlock_lock(&pf->flow_ops_lock);
 
@@ -2552,11 +2552,11 @@ ice_flow_redirect(struct ice_adapter *ad,
                ret = p_flow->engine->redirect(ad, p_flow, rd);
                if (ret) {
                        PMD_DRV_LOG(ERR, "Failed to redirect flows");
-                       return ret;
+                       break;
                }
        }
 
        rte_spinlock_unlock(&pf->flow_ops_lock);
 
-       return 0;
+       return ret;
 }