From nobody Thu Oct 30 15:31:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 152581842660957.777980166276166; Tue, 8 May 2018 15:27:06 -0700 (PDT) Received: from localhost ([::1]:53574 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGB4b-00067o-RM for importer@patchew.org; Tue, 08 May 2018 18:27:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41370) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGAt7-00036l-3x for qemu-devel@nongnu.org; Tue, 08 May 2018 18:15:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGAt4-0001Ti-Kx for qemu-devel@nongnu.org; Tue, 08 May 2018 18:15:13 -0400 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:40910) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fGAt4-0001Rv-E7 for qemu-devel@nongnu.org; Tue, 08 May 2018 18:15:10 -0400 Received: by mail-wm0-x244.google.com with SMTP id j5-v6so24176346wme.5 for ; Tue, 08 May 2018 15:15:10 -0700 (PDT) Received: from 640k.lan (dynamic-adsl-78-12-189-60.clienti.tiscali.it. [78.12.189.60]) by smtp.gmail.com with ESMTPSA id c15-v6sm14020129edr.78.2018.05.08.15.15.08 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 May 2018 15:15:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=hvbVAVRPjBufMJFk06D/8yVlhs36OdUKBAHAMCESr0Q=; b=Y9fLi6O8LRd3gU2SNO9vFbNBBPvAKTOoB1i4zFJ1eYpvZXKbNYmkUflGeqLA1yl6eX VArnUCNQunDjNa9B/mKtQss72FE5jdfUh86QAJqf8aPZsv8BKcElj+EL3Z2bijte4Kws /V2iZW3X8zWrObdd6t9O+fLyiCim8pUlo/ys0IaUvVIPcr2YivosvRtjmIYgJ1qi+lsQ gKWuR5QCacF+JtBl1ruU0q05Djs7sC8MCSFB2V9uVlAgz+4Q51kunBRAQJABPROxEBbL GpiM5fvQyBvTYpWitTe3xUa6/tn7YyLJ9YjgJz3Csddlmww/oAr7OYybdNQ0Ee09xpx4 q43A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=hvbVAVRPjBufMJFk06D/8yVlhs36OdUKBAHAMCESr0Q=; b=ZL7V+jifxiWpvL0wiI4NC+RrzamBGw2XTm55R+3+6tN9hIwhKqUXVyioTkL/VwBrf3 wZQQcNPcSDUp1ZO1wbVQiLgn5XUIhjkaIo4dIN6w12d3dZQABqaEyM7zJk3O2k3+sVKw XCkOYJshPc3T9e2KokvbL375jNb2rke6fwgaidZEbGL7cidmB8FSJ9mho0CkyfGsw1s2 Yuzc8MiWh9+NPMO3Vo2x6X4CwCcb10f4zWB3qKaenegktI/hzW42veQnfPgnc84d2o3d or1TzodoG9bK4gSZYT23KOTPfzGLPZgdBfwk/RyKecK+tt5MXro4z5S4GrgGtuLGg1wD Bjag== X-Gm-Message-State: ALQs6tBg8PT2lb2aIhHNFoy7j04V/FOhmTo7iIsOsYb0vmzoYxA94lOD XYSnFleOgrdU3pLxcr1D7IGoEl0l X-Google-Smtp-Source: AB8JxZqinmRNTgYj4cJrF0AXpbGUOaEqD85s3ppqKXJaHB1rZzFeffny+yD2zDqdv7iNdoXQFm88HQ== X-Received: by 2002:aa7:d3d7:: with SMTP id o23-v6mr40954323edr.104.1525817709198; Tue, 08 May 2018 15:15:09 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Wed, 9 May 2018 00:14:33 +0200 Message-Id: <1525817687-34620-17-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1525817687-34620-1-git-send-email-pbonzini@redhat.com> References: <1525817687-34620-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PULL 16/30] target/i386: sev: fix memory leaks X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reported by Coverity. Signed-off-by: Paolo Bonzini --- target/i386/sev.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/target/i386/sev.c b/target/i386/sev.c index c011671..2395171 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -430,7 +430,8 @@ static int sev_get_pdh_info(int fd, guchar **pdh, size_t *pdh_len, guchar **cert_chai= n, size_t *cert_chain_len) { - guchar *pdh_data, *cert_chain_data; + guchar *pdh_data =3D NULL; + guchar *cert_chain_data =3D NULL; struct sev_user_data_pdh_cert_export export =3D {}; int err, r; =20 @@ -471,8 +472,9 @@ e_free: SevCapability * sev_get_capabilities(void) { - SevCapability *cap; - guchar *pdh_data, *cert_chain_data; + SevCapability *cap =3D NULL; + guchar *pdh_data =3D NULL; + guchar *cert_chain_data =3D NULL; size_t pdh_len =3D 0, cert_chain_len =3D 0; uint32_t ebx; int fd; @@ -486,7 +488,7 @@ sev_get_capabilities(void) =20 if (sev_get_pdh_info(fd, &pdh_data, &pdh_len, &cert_chain_data, &cert_chain_len)) { - return NULL; + goto out; } =20 cap =3D g_new0(SevCapability, 1); @@ -502,9 +504,9 @@ sev_get_capabilities(void) */ cap->reduced_phys_bits =3D 1; =20 +out: g_free(pdh_data); g_free(cert_chain_data); - close(fd); return cap; } @@ -530,7 +532,7 @@ sev_launch_start(SEVState *s) { gsize sz; int ret =3D 1; - int fw_error; + int fw_error, rc; QSevGuestInfo *sev =3D s->sev_info; struct kvm_sev_launch_start *start; guchar *session =3D NULL, *dh_cert =3D NULL; @@ -543,7 +545,7 @@ sev_launch_start(SEVState *s) &error_abort); if (sev->session_file) { if (sev_read_file_base64(sev->session_file, &session, &sz) < 0) { - return 1; + goto out; } start->session_uaddr =3D (unsigned long)session; start->session_len =3D sz; @@ -551,18 +553,18 @@ sev_launch_start(SEVState *s) =20 if (sev->dh_cert_file) { if (sev_read_file_base64(sev->dh_cert_file, &dh_cert, &sz) < 0) { - return 1; + goto out; } start->dh_uaddr =3D (unsigned long)dh_cert; start->dh_len =3D sz; } =20 trace_kvm_sev_launch_start(start->policy, session, dh_cert); - ret =3D sev_ioctl(s->sev_fd, KVM_SEV_LAUNCH_START, start, &fw_error); - if (ret < 0) { + rc =3D sev_ioctl(s->sev_fd, KVM_SEV_LAUNCH_START, start, &fw_error); + if (rc < 0) { error_report("%s: LAUNCH_START ret=3D%d fw_error=3D%d '%s'", __func__, ret, fw_error, fw_error_to_str(fw_error)); - return 1; + goto out; } =20 object_property_set_int(OBJECT(sev), start->handle, "handle", @@ -570,12 +572,13 @@ sev_launch_start(SEVState *s) sev_set_guest_state(SEV_STATE_LAUNCH_UPDATE); s->handle =3D start->handle; s->policy =3D start->policy; + ret =3D 0; =20 +out: g_free(start); g_free(session); g_free(dh_cert); - - return 0; + return ret; } =20 static int @@ -712,7 +715,7 @@ sev_guest_init(const char *id) uint32_t host_cbitpos; struct sev_user_data_status status =3D {}; =20 - s =3D g_new0(SEVState, 1); + sev_state =3D s =3D g_new0(SEVState, 1); s->sev_info =3D lookup_sev_guest_info(id); if (!s->sev_info) { error_report("%s: '%s' is not a valid '%s' object", @@ -720,7 +723,6 @@ sev_guest_init(const char *id) goto err; } =20 - sev_state =3D s; s->state =3D SEV_STATE_UNINIT; =20 host_cpuid(0x8000001F, 0, NULL, &ebx, NULL, NULL); --=20 1.8.3.1