From patchwork Fri Mar 8 09:44:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arkadiusz Kusztal X-Patchwork-Id: 138120 X-Patchwork-Delegate: gakhil@marvell.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 02ED043C27; Fri, 8 Mar 2024 10:44:17 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A3BFA42F8B; Fri, 8 Mar 2024 10:44:17 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by mails.dpdk.org (Postfix) with ESMTP id 44D1240274 for ; Fri, 8 Mar 2024 10:44:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1709891056; x=1741427056; h=from:to:cc:subject:date:message-id; bh=mHc6kT3neV8xHeBG1fYTjuRhy5pphhMHDeRHGLMOFnU=; b=U+NoQvJNtK9+ztn6mylrUX1/bs3Ee84jkoS6j41X1XucBUssNVSf3URh M6ZgS1fEGDdfGtWc2P0RTHEkKVTrgVDkSDD42NHyBwCVOKx0Sm6J2HgwS EuAsnEi6FmbLLvbf8w3wqHX8DhAOQN2SkBpvZF9Qi/Ur23dNvnxD7XqqB 05+zk464pWfDo62XADfoyxxt1g3ZAvpAi6fDP0D7V8qdurIIB+HikqPKS CE9wCVm2wS1uySELkJIi/6iZSIDW1mm7o9G9Yb4vplcjXL2SzCH85oh5S bWznuenwZvNLPAPLhgLcePkDz8+nQ6cLVKEEL2iTOMDfcUJo2qFr2PlED w==; X-IronPort-AV: E=McAfee;i="6600,9927,11006"; a="5203810" X-IronPort-AV: E=Sophos;i="6.07,109,1708416000"; d="scan'208";a="5203810" Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2024 01:44:15 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,109,1708416000"; d="scan'208";a="14997476" Received: from silpixa00400308.ir.intel.com ([10.237.214.154]) by fmviesa004.fm.intel.com with ESMTP; 08 Mar 2024 01:44:14 -0800 From: Arkadiusz Kusztal To: dev@dpdk.org Cc: gakhil@marvell.com, ciara.power@intel.com, Arkadiusz Kusztal Subject: [PATCH] common/qat: fix null dereference in release function Date: Fri, 8 Mar 2024 09:44:11 +0000 Message-Id: <20240308094411.5467-1-arkadiuszx.kusztal@intel.com> X-Mailer: git-send-email 2.17.1 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 This commit fixes NULL dereference in the release function, and three additional coverity issues related to NULL check. Coverity issue: 415038 Coverity issue: 415050 Coverity issue: 415052 Coverity issue: 415053 Fixes: 477d7d051211 ("common/qat: decouple drivers from common code") Signed-off-by: Arkadiusz Kusztal Acked-by: Ciara Power --- drivers/common/qat/qat_device.c | 14 +++++++------- drivers/compress/qat/qat_comp_pmd.c | 6 ++++-- drivers/crypto/qat/qat_asym.c | 5 ++--- drivers/crypto/qat/qat_sym.c | 4 ++-- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/drivers/common/qat/qat_device.c b/drivers/common/qat/qat_device.c index 500ca0f308..666e2bb995 100644 --- a/drivers/common/qat/qat_device.c +++ b/drivers/common/qat/qat_device.c @@ -420,15 +420,15 @@ qat_pci_device_release(struct rte_pci_device *pci_dev) if (rte_eal_process_type() == RTE_PROC_PRIMARY) { for (i = 0; i < QAT_MAX_SERVICES; i++) { - if (qat_dev->pmd[i] == NULL) - continue; - QAT_LOG(DEBUG, "QAT %s device %s is busy", - qat_service[i].name, name); - busy = 1; + if (qat_dev->pmd[i] != NULL) { + QAT_LOG(DEBUG, "QAT %s device %s is busy", + qat_service[i].name, name); + busy = 1; + } + } if (busy) return -EBUSY; rte_memzone_free(inst->mz); - } } memset(inst, 0, sizeof(struct qat_device_info)); qat_nb_pci_devices--; @@ -445,7 +445,7 @@ qat_pci_dev_destroy(struct qat_pci_device *qat_pci_dev, int i; for (i = 0; i < QAT_MAX_SERVICES; i++) { - if (!qat_service[i].dev_create) + if (!qat_service[i].dev_destroy) continue; qat_service[i].dev_destroy(qat_pci_dev); } diff --git a/drivers/compress/qat/qat_comp_pmd.c b/drivers/compress/qat/qat_comp_pmd.c index c5f7c7dc67..55e510c91f 100644 --- a/drivers/compress/qat/qat_comp_pmd.c +++ b/drivers/compress/qat/qat_comp_pmd.c @@ -792,12 +792,14 @@ qat_comp_dev_create(struct qat_pci_device *qat_pci_dev) static int qat_comp_dev_destroy(struct qat_pci_device *qat_pci_dev) { - struct qat_comp_dev_private *dev = - qat_pci_dev->pmd[QAT_SERVICE_COMPRESSION]; + struct qat_comp_dev_private *dev; if (qat_pci_dev == NULL) return -ENODEV; + dev = qat_pci_dev->pmd[QAT_SERVICE_COMPRESSION]; + if (dev == NULL) + return 0; if (rte_eal_process_type() == RTE_PROC_PRIMARY) rte_memzone_free(dev->capa_mz); diff --git a/drivers/crypto/qat/qat_asym.c b/drivers/crypto/qat/qat_asym.c index 8ec9f65156..14d6ec358c 100644 --- a/drivers/crypto/qat/qat_asym.c +++ b/drivers/crypto/qat/qat_asym.c @@ -1625,16 +1625,15 @@ static int qat_asym_dev_destroy(struct qat_pci_device *qat_pci_dev) { struct rte_cryptodev *cryptodev; - struct qat_cryptodev_private *dev = - qat_pci_dev->pmd[QAT_SERVICE_ASYMMETRIC]; + struct qat_cryptodev_private *dev; if (qat_pci_dev == NULL) return -ENODEV; + dev = qat_pci_dev->pmd[QAT_SERVICE_ASYMMETRIC]; if (dev == NULL) return 0; if (rte_eal_process_type() == RTE_PROC_PRIMARY) rte_memzone_free(dev->capa_mz); - /* free crypto device */ cryptodev = rte_cryptodev_pmd_get_dev(dev->dev_id); rte_cryptodev_pmd_destroy(cryptodev); diff --git a/drivers/crypto/qat/qat_sym.c b/drivers/crypto/qat/qat_sym.c index 6c7b1724ef..c530496786 100644 --- a/drivers/crypto/qat/qat_sym.c +++ b/drivers/crypto/qat/qat_sym.c @@ -345,11 +345,11 @@ static int qat_sym_dev_destroy(struct qat_pci_device *qat_pci_dev) { struct rte_cryptodev *cryptodev; - struct qat_cryptodev_private *dev = - qat_pci_dev->pmd[QAT_SERVICE_SYMMETRIC]; + struct qat_cryptodev_private *dev; if (qat_pci_dev == NULL) return -ENODEV; + dev = qat_pci_dev->pmd[QAT_SERVICE_SYMMETRIC]; if (dev == NULL) return 0; if (rte_eal_process_type() == RTE_PROC_PRIMARY)