From nobody Mon Sep 16 19:45:27 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.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; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1719567122; cv=none; d=zohomail.com; s=zohoarc; b=N2HNF5Y7rVSwDqnNPU5pkbof+WxP8PIsvHmQkE1mklWDW8VNXSvj8H8ist+A7fdxI2g1fBuPb9hEoyYsIm+67r/a0pI+Ei5mRjIovJg0XSzDY0BNZdoIO6fcwsRNRsWO0A4FI9heXchFLIkWZUA0epQNrxz+0WDBTREgb9s3dk8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1719567122; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=p//7Ce+ptRRPTpDWIZ/w0rO0eQPdap4+anjph2J8JKo=; b=F3VQOqpA/6/5O1uNsov8VFbAzoa5sADaa/qR50qMu30p8AykyQWx4OchhOe8Lwglc0V47IzCWeJtxsKp1pMYcNgf7G/77ytv91L4/wigepL1EscqUcR3wFdgzVyXOG0up0CzLAif8P5V4N4eDEiHBMCA1ye1xbuGgf+DzD29iKg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1719567122183741.7308066467643; Fri, 28 Jun 2024 02:32:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sN7wa-0005og-EG; Fri, 28 Jun 2024 05:31:00 -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 1sN7wX-0005nM-JM for qemu-devel@nongnu.org; Fri, 28 Jun 2024 05:30:57 -0400 Received: from mgamail.intel.com ([198.175.65.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sN7wV-0005Yz-I8 for qemu-devel@nongnu.org; Fri, 28 Jun 2024 05:30:57 -0400 Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2024 02:30:52 -0700 Received: from unknown (HELO SPR-S2600BT.bj.intel.com) ([10.240.192.127]) by fmviesa008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2024 02:30:49 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1719567056; x=1751103056; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lA2zuINPzZoggNMavj+h2yI5orhGU69Td9Lm5CUad9w=; b=Ho5dG2BMa1MhX/hnwtW6wql3B4OKqzODiAwkRKO2cy/U/2p0YIRf8Epv VuNsAZcK9yJgll77OeCMA1MVmYkF5D7QXC0UYMIMrxvUW7SscY8Rdyr6O VDBMK8luda2BXuw70Bgm5XmrbotrbWyxELQbs3aXp0eVwtnOa++qhAxNm wVLiIfrLsTe66bMiqacZY5uPCgk2DGXnpX33JcVDeXmaIZfInSoPG3nlh QE3wVRZoTHoSH6ba3qyDxjkTQ91qxHxlPTPPi+ju8/t1hfrYXHZxRnXbd Ooc+GLjPQSCje7syqHvna5wIIaJaopODsTarKO7au9VxCZz+Ys+kBz9Zg g==; X-CSE-ConnectionGUID: n85z96lOQw2PuY+0ikBlSQ== X-CSE-MsgGUID: 3Ebk7kuZTjuTQ/sxbctznw== X-IronPort-AV: E=McAfee;i="6700,10204,11116"; a="28136022" X-IronPort-AV: E=Sophos;i="6.09,168,1716274800"; d="scan'208";a="28136022" X-CSE-ConnectionGUID: IvJqDkC3SaCYGJQcXlxh+Q== X-CSE-MsgGUID: pmD5I61ARPy+l7mXDTbkYg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,168,1716274800"; d="scan'208";a="44677906" From: Zhenzhong Duan To: qemu-devel@nongnu.org Cc: alex.williamson@redhat.com, clg@redhat.com, kraxel@redhat.com, chao.p.peng@intel.com, Zhenzhong Duan Subject: [PATCH 1/2] vfio/display: Fix potential memleak of edid info Date: Fri, 28 Jun 2024 17:28:14 +0800 Message-Id: <20240628092815.164423-2-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240628092815.164423-1-zhenzhong.duan@intel.com> References: <20240628092815.164423-1-zhenzhong.duan@intel.com> 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=198.175.65.12; envelope-from=zhenzhong.duan@intel.com; helo=mgamail.intel.com X-Spam_score_int: -45 X-Spam_score: -4.6 X-Spam_bar: ---- X-Spam_report: (-4.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.212, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1719567123464100001 Content-Type: text/plain; charset="utf-8" EDID related device region info is leaked in three paths: 1. In vfio_get_dev_region_info(), when edid info isn't find, the last device region info is leaked. 2. In vfio_display_edid_init() error path, edid info is leaked. 3. In VFIODisplay destroying path, edid info is leaked. Fixes: 08479114b0de ("vfio/display: add edid support.") Signed-off-by: Zhenzhong Duan --- hw/vfio/display.c | 2 ++ hw/vfio/helpers.c | 1 + 2 files changed, 3 insertions(+) diff --git a/hw/vfio/display.c b/hw/vfio/display.c index 661e921616..5926bd6628 100644 --- a/hw/vfio/display.c +++ b/hw/vfio/display.c @@ -171,6 +171,7 @@ static void vfio_display_edid_init(VFIOPCIDevice *vdev) =20 err: trace_vfio_display_edid_write_error(); + g_free(dpy->edid_info); g_free(dpy->edid_regs); dpy->edid_regs =3D NULL; return; @@ -182,6 +183,7 @@ static void vfio_display_edid_exit(VFIODisplay *dpy) return; } =20 + g_free(dpy->edid_info); g_free(dpy->edid_regs); g_free(dpy->edid_blob); timer_free(dpy->edid_link_timer); diff --git a/hw/vfio/helpers.c b/hw/vfio/helpers.c index b14edd46ed..3dd32b26a4 100644 --- a/hw/vfio/helpers.c +++ b/hw/vfio/helpers.c @@ -586,6 +586,7 @@ int vfio_get_dev_region_info(VFIODevice *vbasedev, uint= 32_t type, g_free(*info); } =20 + g_free(*info); *info =3D NULL; return -ENODEV; } --=20 2.34.1 From nobody Mon Sep 16 19:45:27 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.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; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1719567122; cv=none; d=zohomail.com; s=zohoarc; b=H9XjvocbaRoU3URh0E3X/VO5eCsFaf9YYL7s1tYfBekQgtdDROeK6YiuxC+cBh14nJrMAPqt+hASvyP5MUzQlhxuGlOonadr01NOzDbSTk1VK1oIP9/xlxkXhzMjPVS9C33looLD2D9dvnn3SGmlLn5GmwKig2S1JaQ3RK4MAj4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1719567122; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=y/+rHugbYXRC/M28QNE+osGeOQNoAd31FqXvr+HTdIs=; b=JnLO1LyOCVByfAZKvsGDf8AgG/hy/4D1sC9arO5yUY41QkymAc4ukgkbyZQLmi43mz7OESq8szcGBuUQwrlnf0zOw/Pe8aWDjcmAr7JzNb4g4RtJpCeQrz/NvwdT6CdOUoGLRXGkM/artZSnR+yVkKKEvWpVhwCeSiQfApTQRFA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1719567122327813.3583562332533; Fri, 28 Jun 2024 02:32:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sN7wc-0005oy-5K; Fri, 28 Jun 2024 05:31:02 -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 1sN7wY-0005nv-Ug for qemu-devel@nongnu.org; Fri, 28 Jun 2024 05:30:58 -0400 Received: from mgamail.intel.com ([198.175.65.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sN7wV-0005ZE-Ko for qemu-devel@nongnu.org; Fri, 28 Jun 2024 05:30:58 -0400 Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2024 02:30:54 -0700 Received: from unknown (HELO SPR-S2600BT.bj.intel.com) ([10.240.192.127]) by fmviesa008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2024 02:30:51 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1719567056; x=1751103056; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/76VxKHdez8Q9AtArS2MWAWO4b7JCMBzxTeaXLLoAlU=; b=nWMBMSEK71VqS3MGQQmJ027Uo7mF6RchFC7w2hKVM2hvApVfK0HL8k3Y YM1+oVl3jRg/evyh9YwYMJwug0eVpxxXd/kRL26a7HLzgpWv64x2mvJpp 2VlzPfrZ+EfBWhMAexNx9qz9OoRbrpa5T7TCfpkS+oc3Q1eOGwGssurtc QMvl+Y/mDSRGZRgLmLAwqVpAHwfmrQeEX1PFCrv5ux68XAE/zkUtgMozZ YJSV5JTpXupnx5hQ3DTj1amp/88CNfYvYHHWfWeSw8PaGAU8FeiJ1NNEh KBGI66IWTb01srEv23UwnJbOx9UxyFrw8XyWbnK84fI2Ay4wLjufovSe4 A==; X-CSE-ConnectionGUID: qar2CjOHTDSrhXRv1e3Yhg== X-CSE-MsgGUID: G3PLLvb9S5+CAEX1lJfNPQ== X-IronPort-AV: E=McAfee;i="6700,10204,11116"; a="28136028" X-IronPort-AV: E=Sophos;i="6.09,168,1716274800"; d="scan'208";a="28136028" X-CSE-ConnectionGUID: KAfSqj9zTXmuqzZ0BEAaMQ== X-CSE-MsgGUID: WuR/3kG5TKe8/oV7rucDJA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,168,1716274800"; d="scan'208";a="44677920" From: Zhenzhong Duan To: qemu-devel@nongnu.org Cc: alex.williamson@redhat.com, clg@redhat.com, kraxel@redhat.com, chao.p.peng@intel.com, Zhenzhong Duan Subject: [PATCH 2/2] vfio/display: Fix vfio_display_edid_init() error path Date: Fri, 28 Jun 2024 17:28:15 +0800 Message-Id: <20240628092815.164423-3-zhenzhong.duan@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240628092815.164423-1-zhenzhong.duan@intel.com> References: <20240628092815.164423-1-zhenzhong.duan@intel.com> 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=198.175.65.12; envelope-from=zhenzhong.duan@intel.com; helo=mgamail.intel.com X-Spam_score_int: -45 X-Spam_score: -4.6 X-Spam_bar: ---- X-Spam_report: (-4.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.212, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1719567123487100002 vfio_display_edid_init() can fail for many reasons and return silently. It would be good to report the error. Old mdev driver may not support vfio edid region and we allow to go through in this case. vfio_display_edid_update() isn't changed because it can be called at runtime when UI changes (i.e. window resize). Fixes: 08479114b0de ("vfio/display: add edid support.") Suggested-by: C=C3=A9dric Le Goater Signed-off-by: Zhenzhong Duan Reviewed-by: Marc-Andr=C3=A9 Lureau --- hw/vfio/display.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/hw/vfio/display.c b/hw/vfio/display.c index 5926bd6628..462845ce69 100644 --- a/hw/vfio/display.c +++ b/hw/vfio/display.c @@ -124,7 +124,7 @@ static void vfio_display_edid_ui_info(void *opaque, uin= t32_t idx, } } =20 -static void vfio_display_edid_init(VFIOPCIDevice *vdev) +static bool vfio_display_edid_init(VFIOPCIDevice *vdev, Error **errp) { VFIODisplay *dpy =3D vdev->dpy; int fd =3D vdev->vbasedev.fd; @@ -135,7 +135,8 @@ static void vfio_display_edid_init(VFIOPCIDevice *vdev) VFIO_REGION_SUBTYPE_GFX_EDID, &dpy->edid_info); if (ret) { - return; + /* Failed to get GFX edid info, allow to go through without edid. = */ + return true; } =20 trace_vfio_display_edid_available(); @@ -167,14 +168,15 @@ static void vfio_display_edid_init(VFIOPCIDevice *vde= v) vfio_display_edid_link_up, vdev); =20 vfio_display_edid_update(vdev, true, 0, 0); - return; + return true; =20 err: + error_setg(errp, "vfio: failed to read GFX edid field"); trace_vfio_display_edid_write_error(); g_free(dpy->edid_info); g_free(dpy->edid_regs); dpy->edid_regs =3D NULL; - return; + return false; } =20 static void vfio_display_edid_exit(VFIODisplay *dpy) @@ -367,8 +369,7 @@ static bool vfio_display_dmabuf_init(VFIOPCIDevice *vde= v, Error **errp) return false; } } - vfio_display_edid_init(vdev); - return true; + return vfio_display_edid_init(vdev, errp); } =20 static void vfio_display_dmabuf_exit(VFIODisplay *dpy) --=20 2.34.1