From patchwork Fri Sep 6 11:12:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Michael Tokarev X-Patchwork-Id: 825932 Delivered-To: patch@linaro.org Received: by 2002:adf:a345:0:b0:367:895a:4699 with SMTP id d5csp744681wrb; Fri, 6 Sep 2024 04:16:04 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXCElEfTnqw0az8OZhWUf3VDrHEpSVI/ry5O8xm0UiXbSfO678FZQ2ktq4mTKP38lIKJpfzcg==@linaro.org X-Google-Smtp-Source: AGHT+IGHs3iT73YLDBq8/MHQdo0t3jOAAqxYRtAtjVZtexKO39zGNjCw513kjHvy5ybjglT5J0Bx X-Received: by 2002:a05:6214:5f0c:b0:6c3:7061:6d26 with SMTP id 6a1803df08f44-6c5285170e9mr36953466d6.26.1725621364323; Fri, 06 Sep 2024 04:16:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1725621364; cv=none; d=google.com; s=arc-20240605; b=WlyJdxSM2pctHgR/Pejrz2jkILXFeTYjUtLEf/AW5NSHTddCUgP7t1lZRgWogJ4vOX Yf4TBEXY2kuwux49kTrNfvt2UFvcbE/T4F9G7eiBJYHp40XeGkeLYZARuIaoGDZOhbks 0FOzm+Jj7s6G4NGPBTkkamYLDGNzMpS7u+5CZT+elKo6S+omQjA5RIbfV+2SPZgMnXL0 c71ZHN6hAUAOGhQ+yFr981Id60RpMsoS+nLG66pf7Jtb9SLsHUYYQJ2vhEt0W9J24ck+ RoPj8pjTdFU/knPSiBPpnbAe8jtO1gTa38zYWVfpBkddgpr0LDCf7DXp8XlxlBYhKtxd nVig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=PKxVIhJANFze+xmMcM8uP7S6Bd/ydxpmSXBo3WWzjJs=; fh=02U8TvTxRncM3RwMcFSoxHIXE7TbcrtGfM+dWJbu/Mg=; b=HxWbp35VkjOICP+8HFeHTGTuSCnhLmk1enbPnNfTLZuXYPhf8aq0zl5WZuVQ7cMnPO XLhP0M3iDCYsNwA7aMCAThMRzlsTapJeTU/3PxakZYa3ufMRjegOZYM40hRgHDEk9ojx x0Md6vxKQ1Mpc8cThYKkPCMsvY601p0jPAQNhseRiCoBB9QFLiVmGqYZ341JrPofHeGi +5bCZ3P3Ko8mVF+D8AXAmASMJjy0SlPvUhhByavexPf1jb88clL4uF0vWmhu25Bn2U7h zcm2Q3heLltf/ToP5nBrlU3chVidY//4TfjBqN50WNuxzC17NS4m5d9aG4lK1nL1Aq4s 21FQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 6a1803df08f44-6c530633363si624856d6.144.2024.09.06.04.16.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 06 Sep 2024 04:16:04 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" 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_Mathieu-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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Philippe Mathieu-Daudé 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é 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, Error **errp) } } +static void loongarch_ipi_unrealize(DeviceState *dev) +{ + LoongArchIPI *s = LOONGARCH_IPI(dev); + + g_free(s->cpu); +} + static const VMStateDescription vmstate_ipi_core = { .name = "ipi-single", .version_id = 2, @@ -336,23 +343,16 @@ static void loongarch_ipi_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); dc->realize = loongarch_ipi_realize; + dc->unrealize = loongarch_ipi_unrealize; device_class_set_props(dc, ipi_properties); dc->vmsd = &vmstate_loongarch_ipi; } -static void loongarch_ipi_finalize(Object *obj) -{ - LoongArchIPI *s = LOONGARCH_IPI(obj); - - g_free(s->cpu); -} - static const TypeInfo loongarch_ipi_info = { .name = TYPE_LOONGARCH_IPI, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(LoongArchIPI), .class_init = loongarch_ipi_class_init, - .instance_finalize = loongarch_ipi_finalize, }; static void loongarch_ipi_register_types(void)