From patchwork Tue Mar 12 18:07:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Brandes, Shai" X-Patchwork-Id: 138264 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 550B843C94; Tue, 12 Mar 2024 19:09:04 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4D00942E0F; Tue, 12 Mar 2024 19:08:06 +0100 (CET) Received: from smtp-fw-52002.amazon.com (smtp-fw-52002.amazon.com [52.119.213.150]) by mails.dpdk.org (Postfix) with ESMTP id E1A2D42E3B for ; Tue, 12 Mar 2024 19:08:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1710266883; x=1741802883; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=t6Y0cDOtdhPfCkhq829/KBSdxDFOOG7T7EP2WcSpckA=; b=AvIBymGhYpacRfoqfWiX7xb+onQbeT8yd/su+TusSP9cSww0ajHnZHlS iZKaKzRs/RHknHrGJeGsNPqlBoPiSHdEo2vzo/HYokDx5zjaqQvn5ZLi8 xKTShQq2c6vqFlRNWPOPxRQODbuafGtwc0iaSH53z3xhXQGSYgyrVbw99 4=; X-IronPort-AV: E=Sophos;i="6.07,119,1708387200"; d="scan'208";a="619162379" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev) ([10.43.8.6]) by smtp-border-fw-52002.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2024 18:07:59 +0000 Received: from EX19MTAEUB001.ant.amazon.com [10.0.10.100:58120] by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.39.71:2525] with esmtp (Farcaster) id e4a0a989-9a3a-41f7-b820-943df7057a5e; Tue, 12 Mar 2024 18:07:58 +0000 (UTC) X-Farcaster-Flow-ID: e4a0a989-9a3a-41f7-b820-943df7057a5e Received: from EX19D007EUB002.ant.amazon.com (10.252.51.117) by EX19MTAEUB001.ant.amazon.com (10.252.51.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.28; Tue, 12 Mar 2024 18:07:58 +0000 Received: from EX19MTAUWA001.ant.amazon.com (10.250.64.204) by EX19D007EUB002.ant.amazon.com (10.252.51.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.28; Tue, 12 Mar 2024 18:07:57 +0000 Received: from HFA15-CG15235BS.amazon.com (10.85.143.174) by mail-relay.amazon.com (10.250.64.204) with Microsoft SMTP Server id 15.2.1258.28 via Frontend Transport; Tue, 12 Mar 2024 18:07:55 +0000 From: To: CC: , Shai Brandes Subject: [PATCH v4 15/31] net/ena/base: restructure interrupt handling Date: Tue, 12 Mar 2024 20:07:00 +0200 Message-ID: <20240312180716.8515-16-shaibran@amazon.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240312180716.8515-1-shaibran@amazon.com> References: <20240312180716.8515-1-shaibran@amazon.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Shai Brandes 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. Signed-off-by: Shai Brandes Reviewed-by: Amit Bernstein --- 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 fb3ad27d0a..a0c88b1a0e 100644 --- a/drivers/net/ena/base/ena_com.c +++ b/drivers/net/ena/base/ena_com.c @@ -181,6 +181,7 @@ static int ena_com_admin_init_aenq(struct ena_com_dev *ena_dev, 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); } @@ -474,6 +475,9 @@ static void ena_com_handle_single_admin_completion(struct ena_com_admin_queue *a return; } + if (!comp_ctx->occupied) + return; + comp_ctx->status = ENA_CMD_COMPLETED; comp_ctx->comp_status = cqe->acq_common_descriptor.status;