From nobody Mon Nov 17 12:08:25 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1603809909; cv=none; d=zohomail.com; s=zohoarc; b=DNruDnabO2Jpvaq2XRwOuj85Ul2oRYUXCkeq5TVqTfWgOllbGWziYrYgntZUNyhiLFpuUfdxTJ42uMGU9HPmP2J8Bil62ZqaXeJUFzDOy7PjoZQX2VPifbyYWZxMUe6c8IuRPMH3RKEThR83LDJhV/VOf2KKugdKfGOrZpz/VKw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603809909; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MN8Ev71cfZCl7KiHbsdJhfW7sBAivAWHW7ZfrYS/byg=; b=ih2RhCaFxIR+/5Orap+v3cHel86hWkk8AV23H2TWx88hV1uJ5Ux93fOB3qH/zMpEnAqd0c7HR6W7aBrD8XYmHHf02AQyMNRNebayh1dfhBvSWAWY5qJ1gAHlWD0vKFqKKVQYiIa5ltaYOGD2VZkdJk5q3rOhZdNCMhvJ8LjpN7c= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 160380990825349.00645865021386; Tue, 27 Oct 2020 07:45:08 -0700 (PDT) Received: from localhost ([::1]:41690 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kXQDj-0001jm-DT for importer@patchew.org; Tue, 27 Oct 2020 10:45:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42504) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kXPnc-0002BX-TF; Tue, 27 Oct 2020 10:18:08 -0400 Received: from bilbo.ozlabs.org ([2401:3900:2:1::2]:37139 helo=ozlabs.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kXPnW-0007aO-Tq; Tue, 27 Oct 2020 10:18:08 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 4CLDLd6BVMz9sW4; Wed, 28 Oct 2020 01:17:44 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1603808265; bh=qk9USLB1WY7s4/hoobaUMDtYnDz9yCpUwkkpc3E9324=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Oo5IaknuJefbaEeKJLopL7xkjFopS0IirFfu75ktinvHqittC7/VVkFwqciqUUoAQ uPxl9guVioi6mKnMpoW7BMKCLGROP68/NXGPGtp+lSIG6TJRQn6iqhHJBwmQT2SXWS 9If+R31k59Lg/vBTATl6fSCC9+aH0dnCfpawYM2c= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 05/18] spapr: Fix leak of CPU machine specific data Date: Wed, 28 Oct 2020 01:17:22 +1100 Message-Id: <20201027141735.728821-6-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201027141735.728821-1-david@gibson.dropbear.id.au> References: <20201027141735.728821-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2401:3900:2:1::2; envelope-from=dgibson@ozlabs.org; helo=ozlabs.org X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: David Gibson , qemu-ppc@nongnu.org, qemu-devel@nongnu.org, groug@kaod.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Greg Kurz When a CPU core is being removed, the machine specific data of each CPU thread object is leaked. Fix this by calling the dedicated helper we have for that instead of simply unparenting the CPU object. Call it from a separate loop in spapr_cpu_core_unrealize() for symmetry with spapr_cpu_core_realize(). Signed-off-by: Greg Kurz Message-Id: <160279670540.1808373.17319746576919615623.stgit@bahia.lan> Signed-off-by: David Gibson --- hw/ppc/spapr_cpu_core.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index b03620823a..c552112145 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -188,7 +188,6 @@ static void spapr_unrealize_vcpu(PowerPCCPU *cpu, Spapr= CpuCore *sc) } spapr_irq_cpu_intc_destroy(SPAPR_MACHINE(qdev_get_machine()), cpu); cpu_remove_sync(CPU(cpu)); - object_unparent(OBJECT(cpu)); } =20 /* @@ -213,6 +212,15 @@ static void spapr_cpu_core_reset_handler(void *opaque) spapr_cpu_core_reset(opaque); } =20 +static void spapr_delete_vcpu(PowerPCCPU *cpu, SpaprCpuCore *sc) +{ + SpaprCpuState *spapr_cpu =3D spapr_cpu_state(cpu); + + cpu->machine_data =3D NULL; + g_free(spapr_cpu); + object_unparent(OBJECT(cpu)); +} + static void spapr_cpu_core_unrealize(DeviceState *dev) { SpaprCpuCore *sc =3D SPAPR_CPU_CORE(OBJECT(dev)); @@ -224,6 +232,9 @@ static void spapr_cpu_core_unrealize(DeviceState *dev) for (i =3D 0; i < cc->nr_threads; i++) { spapr_unrealize_vcpu(sc->threads[i], sc); } + for (i =3D 0; i < cc->nr_threads; i++) { + spapr_delete_vcpu(sc->threads[i], sc); + } g_free(sc->threads); } =20 @@ -294,15 +305,6 @@ err: return NULL; } =20 -static void spapr_delete_vcpu(PowerPCCPU *cpu, SpaprCpuCore *sc) -{ - SpaprCpuState *spapr_cpu =3D spapr_cpu_state(cpu); - - cpu->machine_data =3D NULL; - g_free(spapr_cpu); - object_unparent(OBJECT(cpu)); -} - static void spapr_cpu_core_realize(DeviceState *dev, Error **errp) { /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user --=20 2.26.2