net/ice: fix deadlock on flow query
authorYu Wenjun <yuwenjun0x@163.com>
Thu, 19 Aug 2021 12:10:02 +0000 (20:10 +0800)
committerQi Zhang <qi.z.zhang@intel.com>
Sun, 29 Aug 2021 13:07:19 +0000 (15:07 +0200)
Default case of the switch statement causes deadlock because it returns
without unlocking the 'flow_ops_lock' lock. Fixing it.

Fixes: 0d6ef740e411 ("net/ice: support flow ops thread safe")
Cc: stable@dpdk.org
Signed-off-by: Yu Wenjun <yuwenjun0x@163.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
drivers/net/ice/ice_generic_flow.c

index 66b5743..c2fa75f 100644 (file)
@@ -2518,15 +2518,16 @@ ice_flow_query(struct rte_eth_dev *dev,
                        ret = flow->engine->query_count(ad, flow, count, error);
                        break;
                default:
-                       return rte_flow_error_set(error, ENOTSUP,
+                       ret = rte_flow_error_set(error, ENOTSUP,
                                        RTE_FLOW_ERROR_TYPE_ACTION,
                                        actions,
                                        "action not supported");
+                       goto out;
                }
        }
 
+out:
        rte_spinlock_unlock(&pf->flow_ops_lock);
-
        return ret;
 }