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 5DAFAA00C2 for ; Thu, 3 Nov 2022 10:31:37 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 59A5D4069B; Thu, 3 Nov 2022 10:31:37 +0100 (CET) Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by mails.dpdk.org (Postfix) with ESMTP id C9CD740693 for ; Thu, 3 Nov 2022 10:31:35 +0100 (CET) Received: by mail-wr1-f47.google.com with SMTP id v1so1692608wrt.11 for ; Thu, 03 Nov 2022 02:31:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=K0M0LNIYM/vCsMv1VB/luOxlnEKefLyCgtkePPI+moI=; b=GcnA5AcJeXFaEJGsrvBFBe79Y1opwKrqerBLJLXu/4HY3RFyg7UL65LecfcwR9g/tq E5ph7a2xklyeWs2v4KV87aPdvSSb2zrG4tNnYhxiFCx2cDOy3UWZjopI0CAKptzhVaK0 SRsgbR83rOFxaxGW2bSjgnRfch8jMEnTEnJLX/o4SR5vYYLfwrVZQmocjG7im8Xjewto gDIJel7pV4SX46V/IWvL0hzKPh5ckAOiU0bd3v+6bdkfn7Bt4GHA+1u1PliitHv2bdbf O2eCae4aKfovL/586O2YwFoQx/mIUxex3XaIu/dqT/gx0/nmSE+olCEtb1lGwbEzQzIC MH2w== 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=K0M0LNIYM/vCsMv1VB/luOxlnEKefLyCgtkePPI+moI=; b=JYmqhXxe4wfPiLIGqFfYgFiZo1N1imfrTaJNeRdWXAh+KvESU5UzFmmUshUubaTvBh fCxr6MeK17jPkC266kbFbhYIGT/iYqOWXQeB31fN0wqNTUl94AKMVc6R3WphRBHB/wl0 9YsJsx/ZrG0p1lFOW7PChdz+E7ypQS1kMMYr/h15ExSHFo50HqJqod2ra/w0LAu48VLs HVCNNwizPc8r+5nnd19uSmF47w4D4oOs5WPbGF/2TIp2BT87YFmhTKSiAUaphu32eOCs ClzJkrsoWwdyo8GUMu06FvK/ruAseonwBlw7v52d0d0hfcRP8nUuBakOCc/wu4shdFzM HBPA== X-Gm-Message-State: ACrzQf0PO4LEkAd4t5y8QGg0Lfom4bzBZ0jRQKwlEtrvbo4XVDGz+50z ss8a3Za+H3Dc4hD/LINGJxhxPVjbmqOAbsGz X-Google-Smtp-Source: AMsMyM526cJhS1m3zGBSC19vJa0CnwuurqKXgMbxBNcjJdra4/WxNF0TAh97hEzDRWk/wuELzaSNAA== X-Received: by 2002:a5d:6185:0:b0:236:776f:2bed with SMTP id j5-20020a5d6185000000b00236776f2bedmr17683757wru.535.1667467895518; Thu, 03 Nov 2022 02:31:35 -0700 (PDT) Received: from localhost ([137.220.119.58]) by smtp.gmail.com with ESMTPSA id v20-20020adfa1d4000000b002238ea5750csm420948wrv.72.2022.11.03.02.31.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Nov 2022 02:31:34 -0700 (PDT) From: luca.boccassi@gmail.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 20.11.7 Date: Thu, 3 Nov 2022 09:27:21 +0000 Message-Id: <20221103092758.1099402-63-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221103092758.1099402-1-luca.boccassi@gmail.com> References: <20221103092758.1099402-1-luca.boccassi@gmail.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 20.11.7 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/05/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/6c758fb1b4e3c5c7b5e6f9044055d8b9b3402ef2 Thanks. Luca Boccassi --- >From 6c758fb1b4e3c5c7b5e6f9044055d8b9b3402ef2 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.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-11-03 09:27:29.198316570 +0000 +++ 0063-examples-vm_power_manager-use-safe-list-iterator.patch 2022-11-03 09:27:25.485424608 +0000 @@ -1 +1 @@ -From 9c20d0fdc536df2a320cb1ae6cce49c2c7a02ebb Mon Sep 17 00:00:00 2001 +From 6c758fb1b4e3c5c7b5e6f9044055d8b9b3402ef2 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)