[dpdk-dev] net/mlx5: fix rxq interrupt memory corruption

Message ID 20171109131014.61309-1-shahafs@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Shahaf Shuler Nov. 9, 2017, 1:10 p.m. UTC
  intr_vec allocation size was wrong causing a memory corruption.

Fixes: e1016cb73383 ("net/mlx5: fix Rx interrupts management")
Cc: adrien.mazarguil@6wind.com
Cc: stable@dpdk.org

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Adrien Mazarguil Nov. 9, 2017, 1:26 p.m. UTC | #1
On Thu, Nov 09, 2017 at 03:10:14PM +0200, Shahaf Shuler wrote:
> intr_vec allocation size was wrong causing a memory corruption.
> 
> Fixes: e1016cb73383 ("net/mlx5: fix Rx interrupts management")
> Cc: adrien.mazarguil@6wind.com
> Cc: stable@dpdk.org
> 
> Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>

Indeed, nice catch.

Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>

Could you submit the same patch for mlx4 against the following commit?
(code is identical)

 0a2ae703192c ("net/mlx4: fix Rx interrupts management")

Thanks!
  
Ferruh Yigit Nov. 10, 2017, 9:01 a.m. UTC | #2
On 11/9/2017 5:26 AM, Adrien Mazarguil wrote:
> On Thu, Nov 09, 2017 at 03:10:14PM +0200, Shahaf Shuler wrote:
>> intr_vec allocation size was wrong causing a memory corruption.
>>
>> Fixes: e1016cb73383 ("net/mlx5: fix Rx interrupts management")
>> Cc: adrien.mazarguil@6wind.com
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
> 
> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>

Applied to dpdk/master, thanks.
  

Patch

diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 6b29aaee6..85399eff5 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -331,7 +331,7 @@  priv_rx_intr_vec_enable(struct priv *priv)
 	if (!priv->dev->data->dev_conf.intr_conf.rxq)
 		return 0;
 	priv_rx_intr_vec_disable(priv);
-	intr_handle->intr_vec = malloc(sizeof(intr_handle->intr_vec[rxqs_n]));
+	intr_handle->intr_vec = malloc(n * sizeof(intr_handle->intr_vec[0]));
 	if (intr_handle->intr_vec == NULL) {
 		ERROR("failed to allocate memory for interrupt vector,"
 		      " Rx interrupts will not be supported");