From nobody Mon Sep 28 01:18:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=reject dis=none) header.from=rsg.ci.i.u-tokyo.ac.jp ARC-Seal: i=1; a=rsa-sha256; t=1786080081; cv=none; d=zohomail.com; s=zohoarc; b=HhdlTvdthbmLKGalR3/2btvXuMjofqrhFb4DVFStc7OoBMteln8AhAuT9hx+kGrxLfGuHW7ObfM8aXHrkCcVAQoFXBXNQQ1xvf9Y2fEQ8o5syoBcZWLh1pcu+65P0QKAgicd7uT0SULYdg+zUvOu7WxlLMNUMMZtFAgPw0avSg4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786080081; 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=/DMFEFks+PFjHP9QG4E1HNwIJgAMVNcHnieMxAdqQS0=; b=fbD3Q0DPo64vgGJyF0GPhlMQMhQBIfWTHz780uk+adj8g1+cmol/kjZB+Ub/p83C/Hq+AJLg61lkfRVtPGSoG/9jAfZyeTn6WHT0TegLsHrmwDzsn06c1pQi3jk7oi0FxTw9DJ+P73bGMhyhjijt+W+9A4O+5awomQKlPa2Ifzo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786080081666250.95074759074612; Thu, 6 Aug 2026 22:21:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wsD0c-0007p8-HT; Fri, 07 Aug 2026 01:20:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wsD0a-0007ny-KQ for qemu-devel@nongnu.org; Fri, 07 Aug 2026 01:20:40 -0400 Received: from www3579.sakura.ne.jp ([49.212.243.89]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wsD0W-0000PY-S4 for qemu-devel@nongnu.org; Fri, 07 Aug 2026 01:20:40 -0400 Received: from h183.csg.ci.i.u-tokyo.ac.jp (h183.csg.ci.i.u-tokyo.ac.jp [133.11.54.183]) (authenticated bits=0) by www3579.sakura.ne.jp (8.16.1/8.16.1) with ESMTPSA id 6775KGOO002853 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 7 Aug 2026 14:20:23 +0900 (JST) (envelope-from odaki@rsg.ci.i.u-tokyo.ac.jp) DKIM-Signature: a=rsa-sha256; bh=/DMFEFks+PFjHP9QG4E1HNwIJgAMVNcHnieMxAdqQS0=; c=relaxed/relaxed; d=rsg.ci.i.u-tokyo.ac.jp; h=From:Message-Id:To:Subject:Date; s=rs20250326; t=1786080023; v=1; b=FIaBXwbL6vPvCynAF5fEjB5C4MDWrnB97x7fkhaSSYoXCY22f8uNklzHIgH3pRKu 0yX0XZ4iovYtmoiHVazKHBhr7If0Bx48tQoJETInT7QtT3mKmNz0QHh44YA9cehl /dwmyTKhAQCKUR2a9Dkwf6lw4ii7AN603VRYuPz4fWK4DnzE6s1BuACujynX1cQ/ FYW/m+bCorXqfU3ZreHN7x1I8Rpoe7GkVPbyhTDquD1MHO7vTOF+csdGTXXjm7WG KLCsmEKv8EjVPl1JVpsrQXFGSLFmawF8/KVeRrM7UtbGh6tQESvx2rupetk8ybgh BI+euD8caj7UfpbzrQ/w5Q== From: Akihiko Odaki Date: Fri, 07 Aug 2026 14:20:04 +0900 Subject: [PATCH 1/3] hw/display/virtio-gpu: Avoid creating empty udmabuf MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260807-dmabuf-v1-1-d24b1331dc8a@rsg.ci.i.u-tokyo.ac.jp> References: <20260807-dmabuf-v1-0-d24b1331dc8a@rsg.ci.i.u-tokyo.ac.jp> In-Reply-To: <20260807-dmabuf-v1-0-d24b1331dc8a@rsg.ci.i.u-tokyo.ac.jp> To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , =?utf-8?q?Alex_Benn=C3=A9e?= , Dmitry Osipenko , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Akihiko Odaki X-Mailer: b4 0.16-dev-925f5 X-Developer-Signature: v=1; a=openpgp-sha256; l=5139; i=odaki@rsg.ci.i.u-tokyo.ac.jp; h=from:subject:message-id; bh=6Wq2ITWtcduknEMJiEZmdGQ+Jh8YXJdb/Pqp4k8Cxi4=; b=owGbwMvMwCWmMbc20y1CyJDxtFoSQ1ZpttBckc3q6gFvW7YKFJvZRFdWNH989tXzKuvLxwkqD 7Qf/LbrKGVhEONikBVTZEkp2s2tEV37qTAhvgVmDisTyBAGLk4BmAhDMMN/Z9Wo7rdfrLzubk74 5ZNrL1T59feTLeG3uEOL/L8oPnV9xciw8Znom6rXFypWhXdN931te8j52IE//x6qz0ksfdPP5X+ XFQA= X-Developer-Key: i=odaki@rsg.ci.i.u-tokyo.ac.jp; a=openpgp; fpr=AEDC03C9AF734F2EC26A7BFFA4BAEAA73536753C 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=lists1p.gnu.org; Received-SPF: pass client-ip=49.212.243.89; envelope-from=odaki@rsg.ci.i.u-tokyo.ac.jp; helo=www3579.sakura.ne.jp X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, 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: qemu development 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 @rsg.ci.i.u-tokyo.ac.jp) X-ZM-MESSAGEID: 1786080082710158500 The virtio specification allows creating a blob without backing storage attached. However, virtio-gpu attempts to create an empty udmabuf for such a blob. The ioctl fails with EINVAL and emits a spurious warning. Avoid the invalid ioctl. Signed-off-by: Akihiko Odaki Reviewed-by: Marc-Andr=C3=A9 Lureau --- hw/display/virtio-gpu.c | 94 ++++++++++++++++++++++++++-------------------= ---- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index fbb6fec7a0ad..6bd87d900170 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -363,27 +363,29 @@ static void virtio_gpu_resource_create_blob(VirtIOGPU= *g, res->resource_id =3D cblob.resource_id; res->blob_size =3D cblob.size; =20 - ret =3D virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeof(cblo= b), - cmd, &res->addrs, &res->iov, - &res->iov_cnt); - if (ret < 0) { - cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC; - g_free(res); - return; - } + if (cblob.nr_entries) { + ret =3D virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeof(= cblob), + cmd, &res->addrs, &res->iov, + &res->iov_cnt); + if (ret < 0) { + cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC; + g_free(res); + return; + } =20 - if (res->iov_cnt > 0 && - iov_size(res->iov, res->iov_cnt) < res->blob_size) { - qemu_log_mask(LOG_GUEST_ERROR, - "%s: backing storage smaller than blob size\n", - __func__); - cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER; - virtio_gpu_cleanup_mapping(g, res); - g_free(res); - return; + if (iov_size(res->iov, res->iov_cnt) < res->blob_size) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: backing storage smaller than blob size\n", + __func__); + cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER; + virtio_gpu_cleanup_mapping(g, res); + g_free(res); + return; + } + + virtio_gpu_init_udmabuf(res); } =20 - virtio_gpu_init_udmabuf(res); QTAILQ_INSERT_HEAD(&g->reslist, res, next); } =20 @@ -1369,8 +1371,6 @@ static bool virtio_gpu_load_restore_mapping(VirtIOGPU= *g, } } =20 - QTAILQ_INSERT_HEAD(&g->reslist, res, next); - g->hostmem +=3D res->hostmem; return true; } =20 @@ -1449,6 +1449,8 @@ static int virtio_gpu_load(QEMUFile *f, void *opaque,= size_t size, return -EINVAL; } =20 + QTAILQ_INSERT_HEAD(&g->reslist, res, next); + g->hostmem +=3D hostmem; resource_id =3D qemu_get_be32(f); } =20 @@ -1508,36 +1510,38 @@ static int virtio_gpu_blob_load(QEMUFile *f, void *= opaque, size_t size, res->blob_size =3D qemu_get_be32(f); res->iov_cnt =3D qemu_get_be32(f); =20 - res->addrs =3D g_try_new(uint64_t, res->iov_cnt); - res->iov =3D g_try_new(struct iovec, res->iov_cnt); - if (res->iov_cnt && (!res->addrs || !res->iov)) { - g_free(res->addrs); - g_free(res->iov); - g_free(res); - return -EINVAL; - } + if (res->iov_cnt) { + res->addrs =3D g_try_new(uint64_t, res->iov_cnt); + res->iov =3D g_try_new(struct iovec, res->iov_cnt); + if (!res->addrs || !res->iov) { + g_free(res->addrs); + g_free(res->iov); + g_free(res); + return -EINVAL; + } =20 - /* read data */ - for (i =3D 0; i < res->iov_cnt; i++) { - res->addrs[i] =3D qemu_get_be64(f); - res->iov[i].iov_len =3D qemu_get_be32(f); - } + /* read data */ + for (i =3D 0; i < res->iov_cnt; i++) { + res->addrs[i] =3D qemu_get_be64(f); + res->iov[i].iov_len =3D qemu_get_be32(f); + } =20 - if (res->iov_cnt > 0 && - iov_size(res->iov, res->iov_cnt) < res->blob_size) { - g_free(res->addrs); - g_free(res->iov); - g_free(res); - return -EINVAL; - } + if (iov_size(res->iov, res->iov_cnt) < res->blob_size) { + g_free(res->addrs); + g_free(res->iov); + g_free(res); + return -EINVAL; + } =20 - if (!virtio_gpu_load_restore_mapping(g, res)) { - g_free(res); - return -EINVAL; - } + if (!virtio_gpu_load_restore_mapping(g, res)) { + g_free(res); + return -EINVAL; + } =20 - virtio_gpu_init_udmabuf(res); + virtio_gpu_init_udmabuf(res); + } =20 + QTAILQ_INSERT_HEAD(&g->reslist, res, next); resource_id =3D qemu_get_be32(f); } =20 --=20 2.55.0 From nobody Mon Sep 28 01:18:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=reject dis=none) header.from=rsg.ci.i.u-tokyo.ac.jp ARC-Seal: i=1; a=rsa-sha256; t=1786080077; cv=none; d=zohomail.com; s=zohoarc; b=U7c1reakYNdu7giOJqMGYZYui+hS5ia6Sj9uHyVSDH2TP2KZAZn9PE5w1iwEI+aT7hlked+DqFCq/Hs4vKw7mCmJqrPCMWWGO1RvAYt955KKmJ5zov9sfap4j+nN0lZWkw5LK2xNwHrourht6MgJSj4XJU30VJ83OkMO30oZGj4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786080077; 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=5qzsfs5NY6ZMJ5+cjHOLNejKg3HUY5nl+TH/ePNqSXA=; b=AWnUoS/2aybaLf8hBJDjsrXGI8NXtRihk7AqvdhY46tANHHYwqlT7f5/j38kugNtEz62BodJtrxpiFQ9oL01aMlU0s7kWUiYoddFQ1whZnD4oLf65shTRyG08FcByqIqKC7B8Vvpkf0OG30VZ1yquQWVfE4n2Kl9mFV9Poi562A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786080077936679.4919562531389; Thu, 6 Aug 2026 22:21:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wsD0c-0007p3-55; Fri, 07 Aug 2026 01:20:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wsD0Z-0007nZ-72 for qemu-devel@nongnu.org; Fri, 07 Aug 2026 01:20:39 -0400 Received: from www3579.sakura.ne.jp ([49.212.243.89]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wsD0W-0000PX-S8 for qemu-devel@nongnu.org; Fri, 07 Aug 2026 01:20:38 -0400 Received: from h183.csg.ci.i.u-tokyo.ac.jp (h183.csg.ci.i.u-tokyo.ac.jp [133.11.54.183]) (authenticated bits=0) by www3579.sakura.ne.jp (8.16.1/8.16.1) with ESMTPSA id 6775KGOP002853 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 7 Aug 2026 14:20:23 +0900 (JST) (envelope-from odaki@rsg.ci.i.u-tokyo.ac.jp) DKIM-Signature: a=rsa-sha256; bh=5qzsfs5NY6ZMJ5+cjHOLNejKg3HUY5nl+TH/ePNqSXA=; c=relaxed/relaxed; d=rsg.ci.i.u-tokyo.ac.jp; h=From:Message-Id:To:Subject:Date; s=rs20250326; t=1786080024; v=1; b=nyIIf2eLdqT6NnQqWx9kh0oq8Ou1mJPjVLh9p5Jd0BvfjD0qKSf7Jp/kvmhs/Y/U k9OyHoEk2MUFLru1c3us9wrv5InWsqbtKkbccaYgTgC/U4CNpFulgmXgm+U1Pa78 yfwo9SdnjaFGihmkSdx9moPsg3+9YLmvap9VYLC87gjeF8C/z6DfOcT56GTmUPvv Y7UFFTHuK39HXhsY+mypyObvreivIBFGA98bx+MVXhwKj+8iC3ZLuse5lLuh+SiW EcInZWSgWvJflG8tySZmKAVXawLq+eSZ/IP/afznqLXgQDCsfiRYu2pP7Uybl6iH F084n0Q7nSj2e6SULsFj0w== From: Akihiko Odaki Date: Fri, 07 Aug 2026 14:20:05 +0900 Subject: [PATCH 2/3] hw/display/virtio-gpu: Avoid mmap() for empty blob MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260807-dmabuf-v1-2-d24b1331dc8a@rsg.ci.i.u-tokyo.ac.jp> References: <20260807-dmabuf-v1-0-d24b1331dc8a@rsg.ci.i.u-tokyo.ac.jp> In-Reply-To: <20260807-dmabuf-v1-0-d24b1331dc8a@rsg.ci.i.u-tokyo.ac.jp> To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , =?utf-8?q?Alex_Benn=C3=A9e?= , Dmitry Osipenko , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Akihiko Odaki X-Mailer: b4 0.16-dev-925f5 X-Developer-Signature: v=1; a=openpgp-sha256; l=811; i=odaki@rsg.ci.i.u-tokyo.ac.jp; h=from:subject:message-id; bh=dkLY0z4kRQ3/G2AKmebLi0W4pe/7F7FSUA8BZ/LwqtE=; b=owGbwMvMwCWmMbc20y1CyJDxtFoSQ1ZptrDLl6IzSRl/As/fj9thyV2w0qSAc7f1Gbl9G87xm 8fOVVjZUcrCIMbFICumyJJStJtbI7r2U2FCfAvMHFYmkCEMXJwCMBGufYwMS/iDdY+6hbwTV31x Ne1Gf3XFjac/ZG+vq3qc02Kz5W7ZZYZfTAKRxitevOD2L+/UuMJSfcm++1uSloF5kbdYVf429iJ uAA== X-Developer-Key: i=odaki@rsg.ci.i.u-tokyo.ac.jp; a=openpgp; fpr=AEDC03C9AF734F2EC26A7BFFA4BAEAA73536753C 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=lists1p.gnu.org; Received-SPF: pass client-ip=49.212.243.89; envelope-from=odaki@rsg.ci.i.u-tokyo.ac.jp; helo=www3579.sakura.ne.jp X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, 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: qemu development 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 @rsg.ci.i.u-tokyo.ac.jp) X-ZM-MESSAGEID: 1786080081428158500 Calling mmap() for an empty blob will result in EINVAL and emits a spurious warning. Signed-off-by: Akihiko Odaki Reviewed-by: Marc-Andr=C3=A9 Lureau --- hw/display/virtio-gpu-udmabuf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/display/virtio-gpu-udmabuf.c b/hw/display/virtio-gpu-udmabu= f.c index 5f08c855dde1..0377a9bcb406 100644 --- a/hw/display/virtio-gpu-udmabuf.c +++ b/hw/display/virtio-gpu-udmabuf.c @@ -136,7 +136,7 @@ void virtio_gpu_init_udmabuf(struct virtio_gpu_simple_r= esource *res) if (res->iov_cnt =3D=3D 1 && res->iov[0].iov_len < 4096) { pdata =3D res->iov[0].iov_base; - } else { + } else if (res->blob_size) { virtio_gpu_create_udmabuf(res); if (res->dmabuf_fd < 0) { return; --=20 2.55.0 From nobody Mon Sep 28 01:18:01 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=reject dis=none) header.from=rsg.ci.i.u-tokyo.ac.jp ARC-Seal: i=1; a=rsa-sha256; t=1786080078; cv=none; d=zohomail.com; s=zohoarc; b=OZBYrSzpEJ68vgDOTZW+zK1euR6W0P9KIDpAnGlSrhzGFzvwy9f82emi2KoxzVj3zjg+IxcUF3cJ/chQncEuxf84NIzaZj90t45DsESaoDPvnTnsZ7cdOJj5AMXBWIWqO8i+sjSp3fBy0xLxfzalYsVfbv3Jgw0mx3FMwN517Ck= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786080078; 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=v0puGW6cv/bqG3r5MU+ncqROmryZCJf16fjc/EC9je4=; b=OBY4eVCmGQm85q8jm3PoHqTEPpZ7jehWZE3jnnW6gWQ08ucAOIo0b3JVNn/MD6YI7hQeElMqUNZHTobp5BvyH6h9kpQRPBj2SgyibtWKZvkfMVVgbaNRhO5DOniBydP6xuv8q33FYTGfT6kDLHr9xvy1tbRZ1v5On/v8bo1vFwY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786080078091961.7881381872422; Thu, 6 Aug 2026 22:21:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wsD0b-0007ok-Jx; Fri, 07 Aug 2026 01:20:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wsD0a-0007nx-Jz for qemu-devel@nongnu.org; Fri, 07 Aug 2026 01:20:40 -0400 Received: from www3579.sakura.ne.jp ([49.212.243.89]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wsD0W-0000PV-S7 for qemu-devel@nongnu.org; Fri, 07 Aug 2026 01:20:40 -0400 Received: from h183.csg.ci.i.u-tokyo.ac.jp (h183.csg.ci.i.u-tokyo.ac.jp [133.11.54.183]) (authenticated bits=0) by www3579.sakura.ne.jp (8.16.1/8.16.1) with ESMTPSA id 6775KGOQ002853 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 7 Aug 2026 14:20:24 +0900 (JST) (envelope-from odaki@rsg.ci.i.u-tokyo.ac.jp) DKIM-Signature: a=rsa-sha256; bh=v0puGW6cv/bqG3r5MU+ncqROmryZCJf16fjc/EC9je4=; c=relaxed/relaxed; d=rsg.ci.i.u-tokyo.ac.jp; h=From:Message-Id:To:Subject:Date; s=rs20250326; t=1786080024; v=1; b=Z8IJbwUK5fwtnh2NpNhK0/KgPNd3yapXcCbaw33n8FgxG1xN5CSRXnWVNkWXCk/c RFl9YL+qI04cuFbsNfRbmRtBHYieu3iITETFbF0ti4ILHr4m45ZGQ99n9mFUO9ML eeQT3fLKH13wogkr9oz4pZKPS27Oh0hWKIuaIJHUII48sKGOiGMMFi8MLmQqldT9 CB4NyZzshmB7J/7TdjE4R/E1/WNU8LsSVFvMmHC6k4KmJNyykbh6S2vR98SOgDvn vB1x2dLO3RN3YsYdEzY/oIjNur8gIeXnlr8LoOthDkIeqIvtMPvnabuFgwxsbur4 vRKyZOdj6vv1gZeY6G1cyQ== From: Akihiko Odaki Date: Fri, 07 Aug 2026 14:20:06 +0900 Subject: [PATCH 3/3] hw/display/virtio-gpu: Propagate udmabuf errors MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260807-dmabuf-v1-3-d24b1331dc8a@rsg.ci.i.u-tokyo.ac.jp> References: <20260807-dmabuf-v1-0-d24b1331dc8a@rsg.ci.i.u-tokyo.ac.jp> In-Reply-To: <20260807-dmabuf-v1-0-d24b1331dc8a@rsg.ci.i.u-tokyo.ac.jp> To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , =?utf-8?q?Alex_Benn=C3=A9e?= , Dmitry Osipenko , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Akihiko Odaki X-Mailer: b4 0.16-dev-925f5 X-Developer-Signature: v=1; a=openpgp-sha256; l=4223; i=odaki@rsg.ci.i.u-tokyo.ac.jp; h=from:subject:message-id; bh=RQTjTbwCzx9uh4qvfYCzSpRPd91h2SU8LWD2vO6zTCY=; b=owGbwMvMwCWmMbc20y1CyJDxtFoSQ1Zptsiln2su/um0fhxWYt7VxdD9rifAwyd1ovPqIouvD 38mLt3fUcrCIMbFICumyJJStJtbI7r2U2FCfAvMHFYmkCEMXJwCMBGJp4wM72RtvLjqcys/MIly sS1RujD1erpZx/2tzv+XmhvFr5z6juGv6K3AE6/Wll7IfbLqzJO1VcVfV9S+/frfKI49/8CqUkU nPgA= X-Developer-Key: i=odaki@rsg.ci.i.u-tokyo.ac.jp; a=openpgp; fpr=AEDC03C9AF734F2EC26A7BFFA4BAEAA73536753C 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=lists1p.gnu.org; Received-SPF: pass client-ip=49.212.243.89; envelope-from=odaki@rsg.ci.i.u-tokyo.ac.jp; helo=www3579.sakura.ne.jp X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, 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: qemu development 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 @rsg.ci.i.u-tokyo.ac.jp) X-ZM-MESSAGEID: 1786080081418158500 Propagate udmabuf errors so that the requested operation will be canceled instead of producing an incomplete result and the user can notice the failure. Signed-off-by: Akihiko Odaki Reviewed-by: Marc-Andr=C3=A9 Lureau --- include/hw/virtio/virtio-gpu.h | 2 +- hw/display/virtio-gpu-udmabuf-stubs.c | 3 ++- hw/display/virtio-gpu-udmabuf.c | 8 +++++--- hw/display/virtio-gpu.c | 18 ++++++++++++++---- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h index 220231ec9d43..69b5ee2e382f 100644 --- a/include/hw/virtio/virtio-gpu.h +++ b/include/hw/virtio/virtio-gpu.h @@ -388,7 +388,7 @@ bool virtio_gpu_scanout_blob_to_fb(struct virtio_gpu_fr= amebuffer *fb, =20 /* virtio-gpu-udmabuf.c */ bool virtio_gpu_have_udmabuf(void); -void virtio_gpu_init_udmabuf(struct virtio_gpu_simple_resource *res); +bool virtio_gpu_init_udmabuf(struct virtio_gpu_simple_resource *res); void virtio_gpu_fini_udmabuf(VirtIOGPU *g, struct virtio_gpu_simple_resource *res); int virtio_gpu_update_dmabuf(VirtIOGPU *g, diff --git a/hw/display/virtio-gpu-udmabuf-stubs.c b/hw/display/virtio-gpu-= udmabuf-stubs.c index 85d03935a332..0883bf05fac1 100644 --- a/hw/display/virtio-gpu-udmabuf-stubs.c +++ b/hw/display/virtio-gpu-udmabuf-stubs.c @@ -7,9 +7,10 @@ bool virtio_gpu_have_udmabuf(void) return false; } =20 -void virtio_gpu_init_udmabuf(struct virtio_gpu_simple_resource *res) +bool virtio_gpu_init_udmabuf(struct virtio_gpu_simple_resource *res) { /* nothing (stub) */ + return false; } =20 void virtio_gpu_fini_udmabuf(VirtIOGPU *g, struct virtio_gpu_simple_resour= ce *res) diff --git a/hw/display/virtio-gpu-udmabuf.c b/hw/display/virtio-gpu-udmabu= f.c index 0377a9bcb406..399b71c9c4fb 100644 --- a/hw/display/virtio-gpu-udmabuf.c +++ b/hw/display/virtio-gpu-udmabuf.c @@ -128,7 +128,7 @@ bool virtio_gpu_have_udmabuf(void) return memfd_backend; } =20 -void virtio_gpu_init_udmabuf(struct virtio_gpu_simple_resource *res) +bool virtio_gpu_init_udmabuf(struct virtio_gpu_simple_resource *res) { void *pdata =3D NULL; =20 @@ -139,17 +139,19 @@ void virtio_gpu_init_udmabuf(struct virtio_gpu_simple= _resource *res) } else if (res->blob_size) { virtio_gpu_create_udmabuf(res); if (res->dmabuf_fd < 0) { - return; + return false; } virtio_gpu_remap_udmabuf(res); if (!res->remapped) { virtio_gpu_destroy_udmabuf(res); - return; + return false; } pdata =3D res->remapped; } =20 res->blob =3D pdata; + + return true; } =20 static void virtio_gpu_free_dmabuf(VirtIOGPU *g, VGPUDMABuf *dmabuf) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 6bd87d900170..f901eb34f184 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -383,7 +383,12 @@ static void virtio_gpu_resource_create_blob(VirtIOGPU = *g, return; } =20 - virtio_gpu_init_udmabuf(res); + if (!virtio_gpu_init_udmabuf(res)) { + cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC; + virtio_gpu_cleanup_mapping(g, res); + g_free(res); + return; + } } =20 QTAILQ_INSERT_HEAD(&g->reslist, res, next); @@ -1025,8 +1030,9 @@ virtio_gpu_resource_attach_backing(VirtIOGPU *g, return; } =20 - if (!res->image) { - virtio_gpu_init_udmabuf(res); + if (!res->image && !virtio_gpu_init_udmabuf(res)) { + cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC; + virtio_gpu_cleanup_mapping(g, res); } } =20 @@ -1538,7 +1544,11 @@ static int virtio_gpu_blob_load(QEMUFile *f, void *o= paque, size_t size, return -EINVAL; } =20 - virtio_gpu_init_udmabuf(res); + if (!virtio_gpu_init_udmabuf(res)) { + virtio_gpu_cleanup_mapping(g, res); + g_free(res); + return -EINVAL; + } } =20 QTAILQ_INSERT_HEAD(&g->reslist, res, next); --=20 2.55.0