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 DE76DA054A for ; Tue, 25 Oct 2022 17:10:03 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DA36142C3C; Tue, 25 Oct 2022 17:10:03 +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 B3B8B42C34 for ; Tue, 25 Oct 2022 17:10:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666710602; 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=IeXfn4OKXxlX8ku6vB5R/70cSM3gukwij6EDtk/2v0A=; b=PLqxQAORHQuqGHofwmku+2abN+jCsXtFpa0D0qBvFvLQO9Id7Xb9FfGAwdsjlfI7aW2ui/ Zf5wuwKeGJD9Gu8GePef0pNdaW6fRzl69WkW4cgoFQZUi43rtasNurntke1UdkJsN/5Oa/ I4KaCzdaDoo/liuvGeq8Z5lYZ/PNDfY= 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-341-A1MjJ4u7MzCDjdvKyeGlTw-1; Tue, 25 Oct 2022 11:09:59 -0400 X-MC-Unique: A1MjJ4u7MzCDjdvKyeGlTw-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 821AB101AA45; Tue, 25 Oct 2022 15:09:58 +0000 (UTC) Received: from rh.redhat.com (unknown [10.39.192.13]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8276549BB60; Tue, 25 Oct 2022 15:09:57 +0000 (UTC) From: Kevin Traynor To: Hamza Khan Cc: Reshma Pattan , David Hunt , dpdk stable Subject: patch 'examples/vm_power_manager: use safe list iterator' has been queued to stable release 21.11.3 Date: Tue, 25 Oct 2022 16:07:22 +0100 Message-Id: <20221025150734.142189-87-ktraynor@redhat.com> In-Reply-To: <20221025150734.142189-1-ktraynor@redhat.com> References: <20221025150734.142189-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/01/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/e7ad87f0343edbfafca9709618cfd373cff7222a Thanks. Kevin --- >From e7ad87f0343edbfafca9709618cfd373cff7222a Mon Sep 17 00:00:00 2001 From: Hamza Khan Date: Tue, 4 Oct 2022 23:09:04 +0100 Subject: [PATCH] examples/vm_power_manager: use safe list iterator [ upstream commit 9c20d0fdc536df2a320cb1ae6cce49c2c7a02ebb ] Currently, when vm_power_manager exits, we are using a LIST_FOREACH macro to iterate over VM info structures while freeing them. This leads to use-after-free error. To address this, replace all usages of LIST_* with TAILQ_* macros, and use the RTE_TAILQ_FOREACH_SAFE macro to iterate and delete VM info structures. Fixes: e8ae9b662506 ("examples/vm_power: channel manager and monitor in host") Signed-off-by: Hamza Khan Signed-off-by: Reshma Pattan Acked-by: David Hunt --- examples/vm_power_manager/channel_manager.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/examples/vm_power_manager/channel_manager.c b/examples/vm_power_manager/channel_manager.c index 838465ab4b..7d7efdd05a 100644 --- a/examples/vm_power_manager/channel_manager.c +++ b/examples/vm_power_manager/channel_manager.c @@ -23,4 +23,5 @@ #include #include +#include #include @@ -59,8 +60,8 @@ struct virtual_machine_info { rte_spinlock_t config_spinlock; int allow_query; - LIST_ENTRY(virtual_machine_info) vms_info; + RTE_TAILQ_ENTRY(virtual_machine_info) vms_info; }; -LIST_HEAD(, virtual_machine_info) vm_list_head; +RTE_TAILQ_HEAD(, virtual_machine_info) vm_list_head; static struct virtual_machine_info * @@ -68,5 +69,5 @@ find_domain_by_name(const char *name) { struct virtual_machine_info *info; - LIST_FOREACH(info, &vm_list_head, vms_info) { + RTE_TAILQ_FOREACH(info, &vm_list_head, vms_info) { if (!strncmp(info->name, name, CHANNEL_MGR_MAX_NAME_LEN-1)) return info; @@ -879,5 +880,5 @@ add_vm(const char *vm_name) new_domain->allow_query = 0; rte_spinlock_init(&(new_domain->config_spinlock)); - LIST_INSERT_HEAD(&vm_list_head, new_domain, vms_info); + TAILQ_INSERT_HEAD(&vm_list_head, new_domain, vms_info); return 0; } @@ -901,5 +902,5 @@ remove_vm(const char *vm_name) return -1; } - LIST_REMOVE(vm_info, vms_info); + TAILQ_REMOVE(&vm_list_head, vm_info, vms_info); rte_spinlock_unlock(&vm_info->config_spinlock); rte_free(vm_info); @@ -954,5 +955,5 @@ channel_manager_init(const char *path __rte_unused) virNodeInfo info; - LIST_INIT(&vm_list_head); + TAILQ_INIT(&vm_list_head); if (connect_hypervisor(path) < 0) { global_n_host_cpus = 64; @@ -1006,7 +1007,7 @@ channel_manager_exit(void) unsigned i; char mask[RTE_MAX_LCORE]; - struct virtual_machine_info *vm_info; + struct virtual_machine_info *vm_info, *tmp; - LIST_FOREACH(vm_info, &vm_list_head, vms_info) { + RTE_TAILQ_FOREACH_SAFE(vm_info, &vm_list_head, vms_info, tmp) { rte_spinlock_lock(&(vm_info->config_spinlock)); @@ -1023,5 +1024,5 @@ channel_manager_exit(void) rte_spinlock_unlock(&(vm_info->config_spinlock)); - LIST_REMOVE(vm_info, vms_info); + TAILQ_REMOVE(&vm_list_head, vm_info, vms_info); rte_free(vm_info); } -- 2.37.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-10-25 14:19:00.512714144 +0100 +++ 0087-examples-vm_power_manager-use-safe-list-iterator.patch 2022-10-25 14:18:58.529798514 +0100 @@ -1 +1 @@ -From 9c20d0fdc536df2a320cb1ae6cce49c2c7a02ebb Mon Sep 17 00:00:00 2001 +From e7ad87f0343edbfafca9709618cfd373cff7222a Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 9c20d0fdc536df2a320cb1ae6cce49c2c7a02ebb ] + @@ -13 +14,0 @@ -Cc: stable@dpdk.org