From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id ED3F3A0555 for ; Thu, 9 Jun 2022 13:38:53 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E84E440A7D; Thu, 9 Jun 2022 13:38:53 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 8D29C40220 for ; Thu, 9 Jun 2022 13:38:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1654774732; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Czxihmj/dekLYmAvepCd0GZSBnZkJc+Jv2skUtgSXTo=; b=fKnMX396TYjFPwEM0Nhk8C6weV2DWjVhNaBQVq0wWnruOQuraRL+02Bx4PXxFbp90XjZEW piFU9trsTwbuLgiQUbR8kRhEYr8KtJy5pK6pqIrGV6+hyLCXKM07n/Ke9D5vKNT+l381VV PXBYvuPDJojT6wuaEmCkdDPjEa+6whM= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-459-2o03Lh-HO2ycplHov1SnAQ-1; Thu, 09 Jun 2022 07:38:49 -0400 X-MC-Unique: 2o03Lh-HO2ycplHov1SnAQ-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E36AB801E80; Thu, 9 Jun 2022 11:38:48 +0000 (UTC) Received: from rh.redhat.com (unknown [10.39.195.82]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4A65518EA3; Thu, 9 Jun 2022 11:38:48 +0000 (UTC) From: Kevin Traynor To: Chengwen Feng Cc: dpdk stable Subject: patch 'dma/hisilicon: enhance CQ scan robustness' has been queued to stable release 21.11.2 Date: Thu, 9 Jun 2022 12:37:00 +0100 Message-Id: <20220609113701.386938-73-ktraynor@redhat.com> In-Reply-To: <20220609113701.386938-1-ktraynor@redhat.com> References: <20220609113701.386938-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 21.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 06/13/22. 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/216108acda7431ddb793c352c16fcf824621fdf0 Thanks. Kevin --- >From 216108acda7431ddb793c352c16fcf824621fdf0 Mon Sep 17 00:00:00 2001 From: Chengwen Feng Date: Fri, 27 May 2022 11:40:54 +0800 Subject: [PATCH] dma/hisilicon: enhance CQ scan robustness [ upstream commit e03c601acb4d483a7305fb9ad15e13f6645b02e2 ] The CQ (completion queue) descriptors were updated by hardware, and then scanned by driver to retrieve hardware completion status. This patch enhances robustness by following: 1. replace while (true) with a finite loop to avoid potential dead loop. 2. check the csq_head field in CQ descriptor to avoid status array overflows. Fixes: 2db4f0b82360 ("dma/hisilicon: add data path") Signed-off-by: Chengwen Feng --- drivers/dma/hisilicon/hisi_dmadev.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/dma/hisilicon/hisi_dmadev.c b/drivers/dma/hisilicon/hisi_dmadev.c index ef4c7b18f7..ec687ef67e 100644 --- a/drivers/dma/hisilicon/hisi_dmadev.c +++ b/drivers/dma/hisilicon/hisi_dmadev.c @@ -582,5 +582,5 @@ hisi_dma_scan_cq(struct hisi_dma_dev *hw) uint64_t misc; - while (true) { + while (count < hw->cq_depth) { cqe = &hw->cqe[cq_head]; misc = cqe->misc; @@ -590,4 +590,14 @@ hisi_dma_scan_cq(struct hisi_dma_dev *hw) csq_head = FIELD_GET(CQE_SQ_HEAD_MASK, misc); + if (unlikely(csq_head > hw->sq_depth_mask)) { + /** + * Defensive programming to prevent overflow of the + * status array indexed by csq_head. Only error logs + * are used for prompting. + */ + HISI_DMA_ERR(hw, "invalid csq_head:%u!\n", csq_head); + count = 0; + break; + } if (unlikely(misc & CQE_STATUS_MASK)) hw->status[csq_head] = FIELD_GET(CQE_STATUS_MASK, -- 2.34.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-06-09 12:34:31.418484139 +0100 +++ 0073-dma-hisilicon-enhance-CQ-scan-robustness.patch 2022-06-09 12:34:29.813980756 +0100 @@ -1 +1 @@ -From e03c601acb4d483a7305fb9ad15e13f6645b02e2 Mon Sep 17 00:00:00 2001 +From 216108acda7431ddb793c352c16fcf824621fdf0 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit e03c601acb4d483a7305fb9ad15e13f6645b02e2 ] + @@ -15 +16,0 @@ -Cc: stable@dpdk.org @@ -23 +24 @@ -index f5c3cd914d..fbe09284ed 100644 +index ef4c7b18f7..ec687ef67e 100644 @@ -26 +27 @@ -@@ -635,5 +635,5 @@ hisi_dma_scan_cq(struct hisi_dma_dev *hw) +@@ -582,5 +582,5 @@ hisi_dma_scan_cq(struct hisi_dma_dev *hw) @@ -33 +34 @@ -@@ -643,4 +643,14 @@ hisi_dma_scan_cq(struct hisi_dma_dev *hw) +@@ -590,4 +590,14 @@ hisi_dma_scan_cq(struct hisi_dma_dev *hw)