From nobody Mon Sep 28 21:04:13 2026 Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 66B193B42D2 for ; Mon, 17 Aug 2026 11:59:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786967944; cv=none; b=C1wnNOYSzH2fXrq4j2HhatO3MOu5QYLRxr3dpd6m00DMhQ+YA1dKPE9bJsTp4jVeDkj6gVnfwvZuCJLlwp2HsvO3Iz2XuEx4eb6/Ii9b79M9jRCsIcDW48vreQwEvJ6U1v6TBNYDfSficQejKCIKaWdC95PE+BIZMrRbg2p5Ebs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786967944; c=relaxed/simple; bh=pPYiH65+N685rGNJJ16GtG0J6xDm4OpdInIOSAG6ZqY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=AzCkr6FMsQQC+8vsmHat4O/jQicDGWfwL7nSG9o427mQhr8wk/1PE1HWcsvlmS/vqB8mbsqP0HtELZ9OcxicYTyYBfXmPB21E6bp7StvPCsOnhiOwFcSniohb/z8Q9q7pyILzHtdGhE9bdlRlsMNu+GMR6pZiESN7z3WtGG5iZs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=owMjzPZG; arc=none smtp.client-ip=209.85.160.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="owMjzPZG" Received: by mail-qt1-f173.google.com with SMTP id d75a77b69052e-51c2a449c57so17581311cf.1 for ; Mon, 17 Aug 2026 04:59:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786967942; x=1787572742; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=AeJCLg2QU4dj3yR0M1UHRgHzRf38a6+0JGJIT48x0Gg=; b=owMjzPZGAl5sEb0ao09wxHvfep3pRIOsk+HoOtYWjFPzK4IKKGzBd61IXJ6Ej6JMAa G/Lu/dpRXs/Xnke9pCx9E2V5Z8vtElWlMBOG04foSrm7GU6ZDLXHJYZ9EadMQ8iYvMus icjrRkIB98BdnLLwZw4CnhA2TXYrCpzjjRWt6osw/ahwm9ybLwqyRPGrAB9gbpVC9YqF 30kRH0wFxfrgJ4CS+LyO1nVq+30+yc7Bp9tuAkxZIrLOJWc96BwLS+TdpjyjGOrOnw8L uvfXdGA79SE8XIteY7ui5sJ/bc67VFSXed+I06uYY3IBQzyjEHqObHF0wWgViZZN8G/m 5r2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786967942; x=1787572742; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=AeJCLg2QU4dj3yR0M1UHRgHzRf38a6+0JGJIT48x0Gg=; b=nTOOmB7FKxxcC0eIARmEiVwyIhnYcTIRc2xKV9/upg+4ahNw0QIdf6SeKGg7U5I1PS CIJNPOiiMlOBmCDxLEh2A6QPExX0gOtCXdvBeCJUw3vn0EIHLCQNugUBhQy8i/I2trZC OtxKsL5QtmrjRnklyTUEh409U4ud59GrTqkoQHUD1uVTeeazeH9oYCY4KCExQO1TV46t ral1lpv69zKyQCnbL7IKTsyJIES22GaKR3DDl774R+WEcm/cng1CzM7X0E9je19kGxk3 iz91/0SIoSW0t32fX3k5avwldvIznQxyqgqoVwalGDV/Zy49krdyeQBwPVGExfoOegj/ pF4A== X-Forwarded-Encrypted: i=1; AHgh+RoxWdm/IwTzp4xkGYOLZp46BPz3txBjVG5IEsziN7tAOrLZh8V07ZMTwNLTC6LTR0ohHUQ59RuzGR5asms=@vger.kernel.org X-Gm-Message-State: AOJu0YxCxdJb7gHcpZ6pnho21PYOYlTUGAGJW/YuH2WNBj9YZXKgzq3U 2fOucQ7G1pJQMo55inYPPkNpSRVFTTro/YPPHXvziTYTqDWNinfh/GRp/jgg57So X-Gm-Gg: AR+sD11cdF7KNtyz6c2URQufL0zfgaBLfZFD18J+KRxtrQA+lUQM1el/SCL/g7SUk+I kavYwS7FqSN4TEbljnMkkykcxjXbDfuNZONR37Xwbt2CrFRyrkdam5SOjeKj+JE6bZVWaUNzqNR ppz74dChkObfsF2v1hnXaTjFXUpfUiZYfIA1qx79qBFGFMJV8+FS3uEhL2ldN5kGJSJyWmpn2ER Ds1dvwiRxLRRQjsmv/5ngiRJPoGjGh1Bu9d7VDgplXRel30J7NKY60d0WOXxkeooGNkRA260Jzl dBPIUKdx79tGHxCBfJq8Y6lgRJiUbxYikIjk+lR3dMpia9VjOOx4ynNtN6kV4RMKaIFyocX1BfD gk/gyNuKSHYTp94xRt9ng0oocXUqVLIkXe91b60W6P7Qc5F5SoP5LB7qNS4OOO4QbKH2uZGBvui 3uXiAvc0SXm6Ghxt0cutXJR+uoFI2X/Nf6OL5kevg5gT9KxymIhbgRNM+iEKc0iASpzVTWwTxSF A== X-Received: by 2002:ac8:7e93:0:b0:51c:1c2c:a8bf with SMTP id d75a77b69052e-52d85584629mr242449191cf.43.1786967942289; Mon, 17 Aug 2026 04:59:02 -0700 (PDT) Received: from amd.ban-spse ([165.204.217.251]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-52db6239ea7sm12681721cf.21.2026.08.17.04.58.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 04:59:02 -0700 (PDT) From: Chaithanya Lagisetty To: zhaotianrui@loongson.cn, maobibo@loongson.cn, chenhuacai@kernel.org Cc: kernel@xen0n.name, lixianglai@loongson.cn, kvm@vger.kernel.org, loongarch@lists.linux.dev, linux-kernel@vger.kernel.org, nagachaithanya9911@gmail.com Subject: [PATCH] LoongArch: KVM: Fix memory leak in kvm_loongarch_env_init() error path Date: Mon, 17 Aug 2026 11:58:47 +0000 Message-ID: <20260817115847.2705791-1-nagachaithanya9911@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" kvm_loongarch_env_init() allocates the per-CPU kvm_context (vmcs) and kvm_loongarch_ops, and registers the perf callbacks, before registering the IPI/EIOINTC/PCH-PIC/DMSINTC KVM devices. If any of those device registrations fails, the function returned the error directly without freeing vmcs and kvm_loongarch_ops or unregistering the perf callbacks. kvm_loongarch_init() propagates the error without calling kvm_loongarch_env_exit(), so these resources are leaked. Unwind the already-acquired resources on the error path, mirroring kvm_loongarch_env_exit(). Fixes: c532de5a67a7 ("LoongArch: KVM: Add IPI device support") Signed-off-by: Chaithanya Lagisetty --- arch/loongarch/kvm/main.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/arch/loongarch/kvm/main.c b/arch/loongarch/kvm/main.c index 3e1005526f4b..685d334cf957 100644 --- a/arch/loongarch/kvm/main.c +++ b/arch/loongarch/kvm/main.c @@ -385,22 +385,33 @@ static int kvm_loongarch_env_init(void) /* Register LoongArch IPI interrupt controller interface. */ ret =3D kvm_loongarch_register_ipi_device(); if (ret) - return ret; + goto err; =20 /* Register LoongArch EIOINTC interrupt controller interface. */ ret =3D kvm_loongarch_register_eiointc_device(); if (ret) - return ret; + goto err; =20 /* Register LoongArch PCH-PIC interrupt controller interface. */ ret =3D kvm_loongarch_register_pch_pic_device(); if (ret) - return ret; + goto err; =20 /* Register LoongArch DMSINTC interrupt contrroller interface */ - if (cpu_has_msgint) + if (cpu_has_msgint) { ret =3D kvm_loongarch_register_dmsintc_device(); + if (ret) + goto err; + } =20 + return 0; + +err: + kvm_unregister_perf_callbacks(); + kfree(kvm_loongarch_ops); + kvm_loongarch_ops =3D NULL; + free_percpu(vmcs); + vmcs =3D NULL; return ret; } =20 --=20 2.43.0