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 F1476A0544 for ; Fri, 11 Nov 2022 12:40:46 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EBD2D42D11; Fri, 11 Nov 2022 12:40:46 +0100 (CET) Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) by mails.dpdk.org (Postfix) with ESMTP id 4A92240141 for ; Fri, 11 Nov 2022 12:40:45 +0100 (CET) Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 62F1241303 for ; Fri, 11 Nov 2022 11:40:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1668166844; bh=eihlOvKki0c+XtpqqUbyVhW8Ts8hUzUCsoixVxr+rJI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mXQqherDVbXxpYGbHSsRWZXp7P2m0XCOh/hNcNULD89jewbiIZpcx7+erqpborKIS AAQjljvWtSKRwL/jmedIw31KTlFC0fJWcTahCjjjVvsl8yuI5a44xDEcGOrvXzl8p/ epxyLMdNaLby80zjoEgmC+V5Pg6sRhJCqjtMuDmqbU3v1Rk4xC6mXtD93v8UqLCB5u Ph6OXVgiJxiWCBw1K8PMKcpfKSFNrkeJ6ATWqD2WzCCu34KBmYuJd+vG29y4sGIYrb FdCo0J1PyLMml1zrjiKVje3S3au9ZdTsLk4jKH4mDOie+XQ16fWH6AkaAhHQLUUg87 D/f9OjTqzTSEA== Received: by mail-ej1-f71.google.com with SMTP id jg27-20020a170907971b00b007ad9892f5f6so2895083ejc.7 for ; Fri, 11 Nov 2022 03:40:44 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eihlOvKki0c+XtpqqUbyVhW8Ts8hUzUCsoixVxr+rJI=; b=qGQsMfd3orL+et1ytSRhq5SbTHQdmDc+glrk6wh5hSqs0GCnz1iGXqKCjvXJOvUiVZ x+IphCTyu7hGwUDedEsAqF1gq0zgQcO5DGZaZeIlgk2SIze5YrGSNdKyaSPh+nW33rSY QWwzZjU2xG5nrLoCar9fiXlO11yTgHrBzgPD0zct3cufKo+QQpFCLw79E2sFxV0L+icl YIC8BK8+3bjba/NtX3w42IweU6SmBLc9QcIiBfPyan8af+e1cruXKH+deXXu25MENxjp IqY28j3FRv8oe9VESH9ViX8LQWXqotHGlYtIqvxC+aiV/3hrohn/CL0F5UQIcWbSC6eo l+GA== X-Gm-Message-State: ANoB5plz7Wj3g9SM1VEz7CMzuwLrK4Div0bpBd/Uieba8VSJoAuPviAe fvhAvn+PJY0tjSld2CSBvD5MI2yiWknPW3u7IwktG1uifzfwp6mPzbNAvxOxRI9x8h/3P3Mpycj Ys2xpU98qt+VxqTnsuCCYIhxm X-Received: by 2002:a05:6402:1697:b0:462:73ba:b73d with SMTP id a23-20020a056402169700b0046273bab73dmr1118129edv.225.1668166840163; Fri, 11 Nov 2022 03:40:40 -0800 (PST) X-Google-Smtp-Source: AA0mqf6TL1NadVVD5+WBWYrqcrsnIN7/659TyNVHKRuefndKtXLnzJnGkqAhc5SnRjbgFnLpUpOZLQ== X-Received: by 2002:a05:6402:1697:b0:462:73ba:b73d with SMTP id a23-20020a056402169700b0046273bab73dmr1118115edv.225.1668166839912; Fri, 11 Nov 2022 03:40:39 -0800 (PST) Received: from localhost.localdomain ([2a02:6d40:39af:c100:1891:6c61:50fd:e567]) by smtp.gmail.com with ESMTPSA id r19-20020a170906a21300b007ad96726c42sm803553ejy.91.2022.11.11.03.40.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Nov 2022 03:40:39 -0800 (PST) From: christian.ehrhardt@canonical.com 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 19.11.14 Date: Fri, 11 Nov 2022 12:38:44 +0100 Message-Id: <20221111113904.1549618-27-christian.ehrhardt@canonical.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221111113904.1549618-1-christian.ehrhardt@canonical.com> References: <20221111113904.1549618-1-christian.ehrhardt@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 19.11.14 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/18/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/cpaelzer/dpdk-stable-queue This queued commit can be viewed at: https://github.com/cpaelzer/dpdk-stable-queue/commit/a244dfa7d784c33b30a06f01aef925bc5ff1372a Thanks. Christian Ehrhardt --- >From a244dfa7d784c33b30a06f01aef925bc5ff1372a 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 0a28cb643b..5e0bbbb4c9 100644 --- a/examples/vm_power_manager/channel_manager.c +++ b/examples/vm_power_manager/channel_manager.c @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -59,16 +60,16 @@ struct virtual_machine_info { virDomainInfo 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 * 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; } @@ -877,7 +878,7 @@ 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; } @@ -899,7 +900,7 @@ remove_vm(const char *vm_name) rte_spinlock_unlock(&vm_info->config_spinlock); 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); return 0; @@ -952,7 +953,7 @@ 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; global_hypervisor_available = 0; @@ -1004,9 +1005,9 @@ 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)); @@ -1021,7 +1022,7 @@ 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.38.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-11-11 12:35:05.751732626 +0100 +++ 0027-examples-vm_power_manager-use-safe-list-iterator.patch 2022-11-11 12:35:04.773192062 +0100 @@ -1 +1 @@ -From 9c20d0fdc536df2a320cb1ae6cce49c2c7a02ebb Mon Sep 17 00:00:00 2001 +From a244dfa7d784c33b30a06f01aef925bc5ff1372a Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 9c20d0fdc536df2a320cb1ae6cce49c2c7a02ebb ] + @@ -13 +14,0 @@ -Cc: stable@dpdk.org @@ -23 +24 @@ -index 838465ab4b..7d7efdd05a 100644 +index 0a28cb643b..5e0bbbb4c9 100644 @@ -26,2 +27 @@ -@@ -22,6 +22,7 @@ - #include +@@ -23,6 +23,7 @@ @@ -28,0 +29 @@ + #include @@ -34 +35 @@ -@@ -58,16 +59,16 @@ struct virtual_machine_info { +@@ -59,16 +60,16 @@ struct virtual_machine_info { @@ -54 +55 @@ -@@ -878,7 +879,7 @@ add_vm(const char *vm_name) +@@ -877,7 +878,7 @@ add_vm(const char *vm_name) @@ -63 +64 @@ -@@ -900,7 +901,7 @@ remove_vm(const char *vm_name) +@@ -899,7 +900,7 @@ remove_vm(const char *vm_name) @@ -72 +73 @@ -@@ -953,7 +954,7 @@ channel_manager_init(const char *path __rte_unused) +@@ -952,7 +953,7 @@ channel_manager_init(const char *path __rte_unused) @@ -81 +82 @@ -@@ -1005,9 +1006,9 @@ channel_manager_exit(void) +@@ -1004,9 +1005,9 @@ channel_manager_exit(void) @@ -93 +94 @@ -@@ -1022,7 +1023,7 @@ channel_manager_exit(void) +@@ -1021,7 +1022,7 @@ channel_manager_exit(void)