patch 'net/ena/base: restructure interrupt handling' has been queued to stable release 21.11.7

Kevin Traynor ktraynor at redhat.com
Thu Apr 4 11:51:35 CEST 2024


Hi,

FYI, your patch has been queued to stable release 21.11.7

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 04/09/24. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4db5876a5eb477cb22b4cca81e008b6e3db8183f

Thanks.

Kevin

---
>From 4db5876a5eb477cb22b4cca81e008b6e3db8183f Mon Sep 17 00:00:00 2001
From: Shai Brandes <shaibran at amazon.com>
Date: Tue, 12 Mar 2024 20:07:00 +0200
Subject: [PATCH] net/ena/base: restructure interrupt handling

[ upstream commit 553653ccc18c1ed9fb0406e1b0130e945d5ab30f ]

When invoking an admin command, in interrupt mode, if the interrupt
is received after timeout and also after the calling function finished
running, the response will be written into a memory that is no longer
valid.

Fixes: 99ecfbf845b3 ("ena: import communication layer")

Signed-off-by: Shai Brandes <shaibran at amazon.com>
Reviewed-by: Amit Bernstein <amitbern at amazon.com>
---
 drivers/net/ena/base/ena_com.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/ena/base/ena_com.c b/drivers/net/ena/base/ena_com.c
index 4bd85f29f5..98035f3cd4 100644
--- a/drivers/net/ena/base/ena_com.c
+++ b/drivers/net/ena/base/ena_com.c
@@ -174,4 +174,5 @@ static void comp_ctxt_release(struct ena_com_admin_queue *queue,
 				     struct ena_comp_ctx *comp_ctx)
 {
+	comp_ctx->user_cqe = NULL;
 	comp_ctx->occupied = false;
 	ATOMIC32_DEC(&queue->outstanding_cmds);
@@ -467,4 +468,7 @@ static void ena_com_handle_single_admin_completion(struct ena_com_admin_queue *a
 	}
 
+	if (!comp_ctx->occupied)
+		return;
+
 	comp_ctx->status = ENA_CMD_COMPLETED;
 	comp_ctx->comp_status = cqe->acq_common_descriptor.status;
-- 
2.44.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2024-04-04 10:49:34.032128733 +0100
+++ 0005-net-ena-base-restructure-interrupt-handling.patch	2024-04-04 10:49:33.699457603 +0100
@@ -1 +1 @@
-From 553653ccc18c1ed9fb0406e1b0130e945d5ab30f Mon Sep 17 00:00:00 2001
+From 4db5876a5eb477cb22b4cca81e008b6e3db8183f Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 553653ccc18c1ed9fb0406e1b0130e945d5ab30f ]
+
@@ -12 +13,0 @@
-Cc: stable at dpdk.org
@@ -21 +22 @@
-index fb3ad27d0a..a0c88b1a0e 100644
+index 4bd85f29f5..98035f3cd4 100644
@@ -24 +25 @@
-@@ -182,4 +182,5 @@ static void comp_ctxt_release(struct ena_com_admin_queue *queue,
+@@ -174,4 +174,5 @@ static void comp_ctxt_release(struct ena_com_admin_queue *queue,
@@ -30 +31 @@
-@@ -475,4 +476,7 @@ static void ena_com_handle_single_admin_completion(struct ena_com_admin_queue *a
+@@ -467,4 +468,7 @@ static void ena_com_handle_single_admin_completion(struct ena_com_admin_queue *a



More information about the stable mailing list