From nobody Sun Nov 24 06:21:51 2024 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1725621364606190.00016344785683; Fri, 6 Sep 2024 04:16:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1smWvM-0005iE-Qn; Fri, 06 Sep 2024 07:14:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1smWvH-00057f-RX; Fri, 06 Sep 2024 07:14:39 -0400 Received: from isrv.corpit.ru ([86.62.121.231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1smWvD-0007kQ-Lc; Fri, 06 Sep 2024 07:14:38 -0400 Received: from tsrv.corpit.ru (tsrv.tls.msk.ru [192.168.177.2]) by isrv.corpit.ru (Postfix) with ESMTP id 8FE488C481; Fri, 6 Sep 2024 14:12:07 +0300 (MSK) Received: from tls.msk.ru (mjt.wg.tls.msk.ru [192.168.177.130]) by tsrv.corpit.ru (Postfix) with SMTP id 9CD6F1336EB; Fri, 6 Sep 2024 14:13:25 +0300 (MSK) Received: (nullmailer pid 353595 invoked by uid 1000); Fri, 06 Sep 2024 11:13:24 -0000 From: Michael Tokarev To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Song Gao , Michael Tokarev Subject: [Stable-9.0.3 17/69] hw/intc/loongson_ipi: Fix resource leak Date: Fri, 6 Sep 2024 14:12:26 +0300 Message-Id: <20240906111324.353230-17-mjt@tls.msk.ru> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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=86.62.121.231; envelope-from=mjt@tls.msk.ru; helo=isrv.corpit.ru X-Spam_score_int: -68 X-Spam_score: -6.9 X-Spam_bar: ------ X-Spam_report: (-6.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1725621365266116600 From: Philippe Mathieu-Daud=C3=A9 Once initialised, QOM objects can be realized and unrealized multiple times before being finalized. Resources allocated in REALIZE must be deallocated in an equivalent UNREALIZE handler. Free the CPU array in loongson_ipi_unrealize() instead of loongson_ipi_finalize(). Cc: qemu-stable@nongnu.org Fixes: 5e90b8db382 ("hw/loongarch: Set iocsr address space per-board rather= than percpu") Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Song Gao Message-Id: <20240723111405.14208-3-philmd@linaro.org> (cherry picked from commit 0c2086bc7360565dfb9933181dafaefe2c94cddf) Signed-off-by: Michael Tokarev (Mjt: rename loongson back to longarch for 9.0 due to lack of v9.0.0-582-gb4a12dfc2132 "hw/intc/loongarch_ipi: Rename as loongson_ipi") diff --git a/hw/intc/loongarch_ipi.c b/hw/intc/loongarch_ipi.c index 521731342c..c210b51811 100644 --- a/hw/intc/loongarch_ipi.c +++ b/hw/intc/loongarch_ipi.c @@ -301,6 +301,13 @@ static void loongarch_ipi_realize(DeviceState *dev, Er= ror **errp) } } =20 +static void loongarch_ipi_unrealize(DeviceState *dev) +{ + LoongArchIPI *s =3D LOONGARCH_IPI(dev); + + g_free(s->cpu); +} + static const VMStateDescription vmstate_ipi_core =3D { .name =3D "ipi-single", .version_id =3D 2, @@ -336,23 +343,16 @@ static void loongarch_ipi_class_init(ObjectClass *kla= ss, void *data) DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->realize =3D loongarch_ipi_realize; + dc->unrealize =3D loongarch_ipi_unrealize; device_class_set_props(dc, ipi_properties); dc->vmsd =3D &vmstate_loongarch_ipi; } =20 -static void loongarch_ipi_finalize(Object *obj) -{ - LoongArchIPI *s =3D LOONGARCH_IPI(obj); - - g_free(s->cpu); -} - static const TypeInfo loongarch_ipi_info =3D { .name =3D TYPE_LOONGARCH_IPI, .parent =3D TYPE_SYS_BUS_DEVICE, .instance_size =3D sizeof(LoongArchIPI), .class_init =3D loongarch_ipi_class_init, - .instance_finalize =3D loongarch_ipi_finalize, }; =20 static void loongarch_ipi_register_types(void) --=20 2.39.2