net/mlx5: fix crash on deleting flow drop queue
If mlx5_dev_start() fails, it tries to rollback data structures related to
rte_flow including drop queue. The destruction code doesn't assume the
structures are created but priv_flow_delete_drop_queue() never does sanity
check. This can cause a crash.
Fixes: 028761059a
("net/mlx5: use an RSS drop queue")
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
This commit is contained in:
parent
993b2455fb
commit
6839dae96c
@ -1465,13 +1465,18 @@ priv_flow_delete_drop_queue(struct priv *priv)
|
||||
struct rte_flow_drop *fdq = priv->flow_drop_queue;
|
||||
unsigned int i;
|
||||
|
||||
claim_zero(ibv_destroy_qp(fdq->qp));
|
||||
claim_zero(ibv_exp_destroy_rwq_ind_table(fdq->ind_table));
|
||||
if (!fdq)
|
||||
return;
|
||||
if (fdq->qp)
|
||||
claim_zero(ibv_destroy_qp(fdq->qp));
|
||||
if (fdq->ind_table)
|
||||
claim_zero(ibv_exp_destroy_rwq_ind_table(fdq->ind_table));
|
||||
for (i = 0; i != MLX5_DROP_WQ_N; ++i) {
|
||||
assert(fdq->wqs[i]);
|
||||
claim_zero(ibv_exp_destroy_wq(fdq->wqs[i]));
|
||||
if (fdq->wqs[i])
|
||||
claim_zero(ibv_exp_destroy_wq(fdq->wqs[i]));
|
||||
}
|
||||
claim_zero(ibv_destroy_cq(fdq->cq));
|
||||
if (fdq->cq)
|
||||
claim_zero(ibv_destroy_cq(fdq->cq));
|
||||
rte_free(fdq);
|
||||
priv->flow_drop_queue = NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user