From patchwork Thu Mar 14 09:36:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mingjin Ye X-Patchwork-Id: 138372 X-Patchwork-Delegate: thomas@monjalon.net 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 5E26143CB2; Thu, 14 Mar 2024 10:54:40 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3A19742E4C; Thu, 14 Mar 2024 10:54:37 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) by mails.dpdk.org (Postfix) with ESMTP id 004CC400D5; Thu, 14 Mar 2024 10:54:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710410075; x=1741946075; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=U/9hDK+WemuwTzVaiO2ua2FU9uZ/uKlnzmoxOBfYsGs=; b=g9AVdc/alQxMBq3VVwdR6JdzBh1aJyiy5DikFNPb4De+NDMZyHhUl+yW 4MfSnBG/fSU8It1qqavcoy/D1/V5sk7MOuCckmAHuthpw5K+Q6T+Dk0h3 27FGOfI505f/uGAlvAYrapk7lcFCeIMsk/DfXhxQztscAEjtHej7Bbx1W zBu8SGdXCJfR4MMdQId6ncjbKL1a0obPTd1mRKCTjYhR5V+2PlSxDogHJ Z7nATQygNRh28KO1+0XdM3sRoteHCkB7jTnDJLrHGUzYrkzCSSu5H3BPw HTbxgLl4h3Kd9Jj7nFRhOO9dFWjlt3MNK2Ip5Zk6UlX8B5eiN/4TuxIG1 A==; X-IronPort-AV: E=McAfee;i="6600,9927,11012"; a="5339884" X-IronPort-AV: E=Sophos;i="6.07,125,1708416000"; d="scan'208";a="5339884" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2024 02:54:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,125,1708416000"; d="scan'208";a="12125201" Received: from unknown (HELO localhost.localdomain) ([10.239.252.253]) by orviesa010-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2024 02:54:33 -0700 From: Mingjin Ye To: dev@dpdk.org Cc: Mingjin Ye , stable@dpdk.org, Anatoly Burakov Subject: [PATCH 1/3] bus/vdev: revert fix devargs in secondary process Date: Thu, 14 Mar 2024 09:36:28 +0000 Message-Id: <20240314093630.1066948-2-mingjinx.ye@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240314093630.1066948-1-mingjinx.ye@intel.com> References: <20240314093630.1066948-1-mingjinx.ye@intel.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 The asan tool detected a memory leak in the vdev driver alloc_devargs. The previous commit was that when inserting a vdev device, the primary process alloc devargs and the secondary process looks for devargs. This causes the device to not be created if the secondary process does not initialise the vdev device. And, this is not the root cause. Therefore the following commit was reverted accordingly. Fixes: 6666628362c9 ("bus/vdev: fix devargs in secondary process") After restoring this commit, the memory leak still exists. A new patch has since fixed this issue. Fixes: 6666628362c9 ("bus/vdev: fix devargs in secondary process") Cc: stable@dpdk.org Signed-off-by: Mingjin Ye --- drivers/bus/vdev/vdev.c | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c index 14cf856237..38d05a9fe9 100644 --- a/drivers/bus/vdev/vdev.c +++ b/drivers/bus/vdev/vdev.c @@ -263,22 +263,6 @@ alloc_devargs(const char *name, const char *args) return devargs; } -static struct rte_devargs * -vdev_devargs_lookup(const char *name) -{ - struct rte_devargs *devargs; - char dev_name[32]; - - RTE_EAL_DEVARGS_FOREACH("vdev", devargs) { - devargs->bus->parse(devargs->name, &dev_name); - if (strcmp(dev_name, name) == 0) { - VDEV_LOG(INFO, "devargs matched %s", dev_name); - return devargs; - } - } - return NULL; -} - static int insert_vdev(const char *name, const char *args, struct rte_vdev_device **p_dev, @@ -291,10 +275,7 @@ insert_vdev(const char *name, const char *args, if (name == NULL) return -EINVAL; - if (rte_eal_process_type() == RTE_PROC_PRIMARY) - devargs = alloc_devargs(name, args); - else - devargs = vdev_devargs_lookup(name); + devargs = alloc_devargs(name, args); if (!devargs) return -ENOMEM; From patchwork Thu Mar 14 09:36:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mingjin Ye X-Patchwork-Id: 138373 X-Patchwork-Delegate: thomas@monjalon.net 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 64AFF43CB2; Thu, 14 Mar 2024 10:54:49 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5701742E65; Thu, 14 Mar 2024 10:54:39 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) by mails.dpdk.org (Postfix) with ESMTP id C118342E41; Thu, 14 Mar 2024 10:54:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710410077; x=1741946077; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4bdO8xet3X+hWNwGP2f+QsQ4X3+CWxzsnW5SvbU6ADk=; b=aB1h8jCLnvztxJGIAuWmpNND25iFOPzUGyI+KkxaHHQPwkA0ojZx3tcx 4DOWXPeYDCoPnpDZ0JaNY4veObmQr3xyNHImNUykDKAzzA/oQsLCZ+Pi+ 7y8xpfS1b9uQneJV1klpsj2S0ddBF9Y1STRS/u32lCJFUcVmTumWhhgzq Zttp90xdqD8FK+7wIVFJZVwxXvWFN+w/K3I6qfkDmY1BQuCcWRPmUI4gG oy7paazb4lZwGFIjTzaPlOo5eRlAhISqVNPRXlV7qioT8hEbP97mcX3YM 05wbkVYD/pH+L6sXjfGZG8FhRS1AsFD/gEFDbEpjz9EXSeXqf5XRF1uxt w==; X-IronPort-AV: E=McAfee;i="6600,9927,11012"; a="5339886" X-IronPort-AV: E=Sophos;i="6.07,125,1708416000"; d="scan'208";a="5339886" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2024 02:54:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,125,1708416000"; d="scan'208";a="12125211" Received: from unknown (HELO localhost.localdomain) ([10.239.252.253]) by orviesa010-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2024 02:54:35 -0700 From: Mingjin Ye To: dev@dpdk.org Cc: Mingjin Ye , stable@dpdk.org Subject: [PATCH 2/3] bus/vdev: revert fix devargs after multi-process bus scan Date: Thu, 14 Mar 2024 09:36:29 +0000 Message-Id: <20240314093630.1066948-3-mingjinx.ye@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240314093630.1066948-1-mingjinx.ye@intel.com> References: <20240314093630.1066948-1-mingjinx.ye@intel.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 The asan tool detected a memory leak in the vdev driver alloc_devargs. The previous commit does not insert device arguments into devargs_list when attaching a device during a bus scan of a secondary process. This resulted in an existing memory leak when removing a vdev device, since rte_devargs_remove actually does nothing. Therefore the following commit was reverted accordingly. Fixes: f5b2eff0847d ("bus/vdev: fix devargs after multi-process bus scan") Restoring this commit will fix the memory leak. There was an issue with device parameters using free devargs when inserting a vdev device when devargs_list already existed, resulting in a core dump. A new patch will fix this issue. Fixes: f5b2eff0847d ("bus/vdev: fix devargs after multi-process bus scan") Cc: stable@dpdk.org Signed-off-by: Mingjin Ye --- drivers/bus/vdev/vdev.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c index 38d05a9fe9..1a6cc7d12d 100644 --- a/drivers/bus/vdev/vdev.c +++ b/drivers/bus/vdev/vdev.c @@ -264,9 +264,7 @@ alloc_devargs(const char *name, const char *args) } static int -insert_vdev(const char *name, const char *args, - struct rte_vdev_device **p_dev, - bool init) +insert_vdev(const char *name, const char *args, struct rte_vdev_device **p_dev) { struct rte_vdev_device *dev; struct rte_devargs *devargs; @@ -300,8 +298,7 @@ insert_vdev(const char *name, const char *args, goto fail; } - if (init) - rte_devargs_insert(&devargs); + rte_devargs_insert(&devargs); dev->device.devargs = devargs; TAILQ_INSERT_TAIL(&vdev_device_list, dev, next); @@ -323,7 +320,7 @@ rte_vdev_init(const char *name, const char *args) int ret; rte_spinlock_recursive_lock(&vdev_device_list_lock); - ret = insert_vdev(name, args, &dev, true); + ret = insert_vdev(name, args, &dev); if (ret == 0) { ret = vdev_probe_all_drivers(dev); if (ret) { @@ -449,7 +446,7 @@ vdev_action(const struct rte_mp_msg *mp_msg, const void *peer) break; case VDEV_SCAN_ONE: VDEV_LOG(INFO, "receive vdev, %s", in->name); - ret = insert_vdev(in->name, NULL, NULL, false); + ret = insert_vdev(in->name, NULL, NULL); if (ret == -EEXIST) VDEV_LOG(DEBUG, "device already exist, %s", in->name); else if (ret < 0) From patchwork Thu Mar 14 09:36:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mingjin Ye X-Patchwork-Id: 138374 X-Patchwork-Delegate: thomas@monjalon.net 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 8346243CB2; Thu, 14 Mar 2024 10:54:55 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C6D2C42E70; Thu, 14 Mar 2024 10:54:40 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) by mails.dpdk.org (Postfix) with ESMTP id 8912A42E65; Thu, 14 Mar 2024 10:54:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710410079; x=1741946079; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=saAQ6BjDU9X0Bry3EqndEr033TMw3MpKb2PQcUKZCTI=; b=AiWE0dD/+KstQOLrnaimF14QCVFCWlw211Y8dr6I0Fs50cmUzUYZ2cDa wLyxDYScwRznhfEelb81rw24FGWnFXACLuRI3fmiu0uP3bSHH9rlGG9HZ SULji0loVz+K6eWgZ/i6zfLcWegJZf0CUGB8q6oEzpei+e1kLtyT/Jqei 9Z/4pL7gu3HYlXRZSx0Oy8TTVrQlmvvJJUTVTgznQzIUp6IwR/WNHph41 1P3T+U7wkXKfd6D4SOEhlaDmqcG9N8+Vmo8jcx5EC0EwiczCtIhXTWfZT UulPKjJdnb4qZQvH2jv55Z9LBLNbKgcTQsmTukq7xPYQxLijtwJwsmqoG Q==; X-IronPort-AV: E=McAfee;i="6600,9927,11012"; a="5339887" X-IronPort-AV: E=Sophos;i="6.07,125,1708416000"; d="scan'208";a="5339887" Received: from orviesa010.jf.intel.com ([10.64.159.150]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2024 02:54:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,125,1708416000"; d="scan'208";a="12125219" Received: from unknown (HELO localhost.localdomain) ([10.239.252.253]) by orviesa010-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2024 02:54:37 -0700 From: Mingjin Ye To: dev@dpdk.org Cc: Mingjin Ye , stable@dpdk.org Subject: [PATCH 3/3] net/vdev: fix insert vdev core dump Date: Thu, 14 Mar 2024 09:36:30 +0000 Message-Id: <20240314093630.1066948-4-mingjinx.ye@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240314093630.1066948-1-mingjinx.ye@intel.com> References: <20240314093630.1066948-1-mingjinx.ye@intel.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 Inserting a vdev device when the device arguments are already stored in devargs_list, the rte_devargs_insert function replaces the supplied new devargs with the found devargs and frees the new devargs. As a result, the use of free devargs results in a core dump. This patch fixes the issue by using valid devargs. Fixes: f3a1188cee4a ("devargs: make device representation generic") Cc: stable@dpdk.org Signed-off-by: Mingjin Ye Tested-by: Yu Jiang --- drivers/bus/vdev/vdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c index 1a6cc7d12d..53fc4a6e21 100644 --- a/drivers/bus/vdev/vdev.c +++ b/drivers/bus/vdev/vdev.c @@ -286,7 +286,6 @@ insert_vdev(const char *name, const char *args, struct rte_vdev_device **p_dev) dev->device.bus = &rte_vdev_bus; dev->device.numa_node = SOCKET_ID_ANY; - dev->device.name = devargs->name; if (find_vdev(name)) { /* @@ -300,6 +299,7 @@ insert_vdev(const char *name, const char *args, struct rte_vdev_device **p_dev) rte_devargs_insert(&devargs); dev->device.devargs = devargs; + dev->device.name = devargs->name; TAILQ_INSERT_TAIL(&vdev_device_list, dev, next); if (p_dev)