DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 1/2] net/mlx5: fix segfault on interrupt disable
@ 2017-10-17 12:04 Shahaf Shuler
  2017-10-17 12:04 ` [dpdk-dev] [PATCH 2/2] net/mlx5: fix interrupt management fields assignment Shahaf Shuler
  2017-10-23 17:49 ` [dpdk-dev] [PATCH 1/2] net/mlx5: fix segfault on interrupt disable Ferruh Yigit
  0 siblings, 2 replies; 3+ messages in thread
From: Shahaf Shuler @ 2017-10-17 12:04 UTC (permalink / raw)
  To: nelio.laranjeiro, adrien.mazarguil, yskoh; +Cc: dev

Interrupt disable can be called when the interrupt vector is not yet
allocated. Such case ends up with segmentation fault.

Fixing it by adding verification for interrupt vector validity.

Fixes: 09cb5b581762 ("net/mlx5: separate DPDK from verbs Rx queue objects")
Cc: nelio.laranjeiro@6wind.com

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
---
 drivers/net/mlx5/mlx5_rxq.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index ad741ef44..2beebfdf2 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -396,6 +396,8 @@ priv_rx_intr_vec_disable(struct priv *priv)
 
 	if (!priv->dev->data->dev_conf.intr_conf.rxq)
 		return;
+	if (!intr_handle->intr_vec)
+		goto free;
 	for (i = 0; i != n; ++i) {
 		struct mlx5_rxq_ctrl *rxq_ctrl;
 		struct mlx5_rxq_data *rxq_data;
@@ -411,8 +413,10 @@ priv_rx_intr_vec_disable(struct priv *priv)
 		rxq_ctrl = container_of(rxq_data, struct mlx5_rxq_ctrl, rxq);
 		mlx5_priv_rxq_ibv_release(priv, rxq_ctrl->ibv);
 	}
+free:
 	rte_intr_free_epoll_fd(intr_handle);
-	free(intr_handle->intr_vec);
+	if (intr_handle->intr_vec)
+		free(intr_handle->intr_vec);
 	intr_handle->nb_efd = 0;
 	intr_handle->intr_vec = NULL;
 }
-- 
2.12.0

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [dpdk-dev] [PATCH 2/2] net/mlx5: fix interrupt management fields assignment
  2017-10-17 12:04 [dpdk-dev] [PATCH 1/2] net/mlx5: fix segfault on interrupt disable Shahaf Shuler
@ 2017-10-17 12:04 ` Shahaf Shuler
  2017-10-23 17:49 ` [dpdk-dev] [PATCH 1/2] net/mlx5: fix segfault on interrupt disable Ferruh Yigit
  1 sibling, 0 replies; 3+ messages in thread
From: Shahaf Shuler @ 2017-10-17 12:04 UTC (permalink / raw)
  To: nelio.laranjeiro, adrien.mazarguil, yskoh; +Cc: dev

Rxq creation was missing assignment for cq fields required for interrupt
management.

Fixes: 09cb5b581762 ("net/mlx5: separate DPDK from verbs Rx queue objects")
Cc: nelio.laranjeiro@6wind.com

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
---
 drivers/net/mlx5/mlx5_rxq.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 2beebfdf2..daf05cb09 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -730,6 +730,9 @@ mlx5_priv_rxq_ibv_new(struct priv *priv, uint16_t idx)
 	};
 	rxq_data->cq_db = cq_info.dbrec;
 	rxq_data->cqes = (volatile struct mlx5_cqe (*)[])(uintptr_t)cq_info.buf;
+	rxq_data->cq_uar = cq_info.cq_uar;
+	rxq_data->cqn = cq_info.cqn;
+	rxq_data->cq_arm_sn = 0;
 	/* Update doorbell counter. */
 	rxq_data->rq_ci = (1 << rxq_data->elts_n) >> rxq_data->sges_n;
 	rte_wmb();
-- 
2.12.0

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-dev] [PATCH 1/2] net/mlx5: fix segfault on interrupt disable
  2017-10-17 12:04 [dpdk-dev] [PATCH 1/2] net/mlx5: fix segfault on interrupt disable Shahaf Shuler
  2017-10-17 12:04 ` [dpdk-dev] [PATCH 2/2] net/mlx5: fix interrupt management fields assignment Shahaf Shuler
@ 2017-10-23 17:49 ` Ferruh Yigit
  1 sibling, 0 replies; 3+ messages in thread
From: Ferruh Yigit @ 2017-10-23 17:49 UTC (permalink / raw)
  To: Shahaf Shuler, nelio.laranjeiro, adrien.mazarguil, yskoh; +Cc: dev

On 10/17/2017 5:04 AM, Shahaf Shuler wrote:
> Interrupt disable can be called when the interrupt vector is not yet
> allocated. Such case ends up with segmentation fault.
> 
> Fixing it by adding verification for interrupt vector validity.
> 
> Fixes: 09cb5b581762 ("net/mlx5: separate DPDK from verbs Rx queue objects")
> Cc: nelio.laranjeiro@6wind.com
> 
> Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
> Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>

Series applied to dpdk-next-net/master, thanks.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-10-23 17:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-17 12:04 [dpdk-dev] [PATCH 1/2] net/mlx5: fix segfault on interrupt disable Shahaf Shuler
2017-10-17 12:04 ` [dpdk-dev] [PATCH 2/2] net/mlx5: fix interrupt management fields assignment Shahaf Shuler
2017-10-23 17:49 ` [dpdk-dev] [PATCH 1/2] net/mlx5: fix segfault on interrupt disable Ferruh Yigit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).