From nobody Tue Feb 10 01:14:40 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1676457845; cv=none; d=zohomail.com; s=zohoarc; b=W1aDg9TermO9b4/6kjV569UnWo2gdfas163+d2+xXSw9IyvZlbgh2+aebXXfktY6MEmMFH1s8JlXHJXRa+6oY45FI3thp1IOfdsSG7QWyX94tpM4ZPWvaCE9J1CpgW7aFId2Pw9sxtQP/XMfnbw62hGAZj8LC4fKqZyRgWl4a/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676457845; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PN2EptrwS8sOnf7UD7k3sAceZDs2rXxQIwHV1ylimDU=; b=kHtvbZRLso1UMdxtTWlYWgdAnZQYv/O9sQJxp3flV2cyeMHQBKzHW6aK1W3YJrE5MFl+BnTQc0toVrpYOc51lrvr5rwTowoe0d0rAAVxkVEuF8VyRnP7lD29ejBzhLYnmFFHsvPfkZF/uQn8URERiLz8mJgO90Ff1+HGpwZ5S3M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1676457845646738.9355576850251; Wed, 15 Feb 2023 02:44:05 -0800 (PST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-299-eH_awSHGMM-zO199ZErUNA-1; Wed, 15 Feb 2023 05:43:17 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1546F3C11A15; Wed, 15 Feb 2023 10:43:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id F17A72026D37; Wed, 15 Feb 2023 10:43:09 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5C84E1949763; Wed, 15 Feb 2023 10:43:04 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 31BA71946588 for ; Wed, 15 Feb 2023 10:42:53 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 143BA140EBF4; Wed, 15 Feb 2023 10:42:53 +0000 (UTC) Received: from harajuku.usersys.redhat.com (ovpn-194-29.brq.redhat.com [10.40.194.29]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9737C14171B6 for ; Wed, 15 Feb 2023 10:42:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1676457844; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=PN2EptrwS8sOnf7UD7k3sAceZDs2rXxQIwHV1ylimDU=; b=SNDafWDPQGB3aJlxRLft0cVLMj5qV8JdVGqTLf/GRq2EzCd45miF3xGSJeBfyvIHUVQkw2 2844Gkhe0v7OX3CK9hHv0Udj6Hp/SX8DYshZM2eHKBxP+a3BLmMacL0FYdmd3DfMYqhEtR JvEwoVyic7LgNS9lWervI+BITOWP/Dg= X-MC-Unique: eH_awSHGMM-zO199ZErUNA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Andrea Bolognani To: libvir-list@redhat.com Subject: [libvirt PATCH 25/33] drivers: Reject unsupported firmware formats Date: Wed, 15 Feb 2023 11:42:22 +0100 Message-Id: <20230215104230.980815-26-abologna@redhat.com> In-Reply-To: <20230215104230.980815-1-abologna@redhat.com> References: <20230215104230.980815-1-abologna@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1676457846126100002 Content-Type: text/plain; charset="utf-8"; x-default="true" This ensures that, as we add support for more formats at the domain XML level, we don't accidentally cause drivers to misbehave or users to get confused. All existing drivers support the raw format, and supporting additional formats will require explicit opt-in on the driver's part. Signed-off-by: Andrea Bolognani --- src/bhyve/bhyve_firmware.c | 7 +++++++ src/libxl/libxl_conf.c | 7 +++++++ src/qemu/qemu_firmware.c | 16 ++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/bhyve/bhyve_firmware.c b/src/bhyve/bhyve_firmware.c index cb1b94b4d5..ff131efa41 100644 --- a/src/bhyve/bhyve_firmware.c +++ b/src/bhyve/bhyve_firmware.c @@ -80,6 +80,13 @@ bhyveFirmwareFillDomain(bhyveConn *driver, if (!def->os.loader) def->os.loader =3D virDomainLoaderDefNew(); =20 + if (def->os.loader->format !=3D VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported loader format '%s'"), + virStorageFileFormatTypeToString(def->os.loader->fo= rmat)); + return -1; + } + def->os.loader->type =3D VIR_DOMAIN_LOADER_TYPE_PFLASH; def->os.loader->readonly =3D VIR_TRISTATE_BOOL_YES; =20 diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 97c183ebf3..485015ef63 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -656,6 +656,13 @@ libxlMakeDomBuildInfo(virDomainDef *def, b_info->u.hvm.bios =3D LIBXL_BIOS_TYPE_OVMF; } =20 + if (def->os.loader && def->os.loader->format !=3D VIR_STORAGE_FILE= _RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported loader format '%s'"), + virStorageFileFormatTypeToString(def->os.loader= ->format)); + return -1; + } + if (def->emulator) { if (!virFileExists(def->emulator)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 4d34062ebf..be6d8d4519 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1545,6 +1545,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, { g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); virDomainLoaderDef *loader =3D def->os.loader; + virStorageSource *nvram =3D loader ? loader->nvram : NULL; bool autoSelection =3D (def->os.firmware !=3D VIR_DOMAIN_OS_DEF_FIRMWA= RE_NONE); int ret; =20 @@ -1559,6 +1560,21 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, if (virDomainDefOSValidate(def, NULL) < 0) return -1; =20 + if (loader && + loader->format !=3D VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported loader format '%s'"), + virStorageFileFormatTypeToString(loader->format)); + return -1; + } + if (nvram && + nvram->format !=3D VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported nvram format '%s'"), + virStorageFileFormatTypeToString(nvram->format)); + return -1; + } + /* If firmware autoselection is disabled and the loader is a ROM * instead of a PFLASH device, then we're using BIOS and we don't * need any information at all */ --=20 2.39.1