From nobody Fri Oct 31 09:50:38 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=cloud.com ARC-Seal: i=1; a=rsa-sha256; t=1750943487; cv=none; d=zohomail.com; s=zohoarc; b=cJqq3CmLadK6mCfCmhpyqA6ZFSh/CQmETl4MwY1j2EC/W18PK/DJPA83E0Eoxgt6vEYLlyoa2nm04nybZMaUwfNEiVEFHpG66v7Vmb0z8KL1AT3Ww56nE5QakUXnD8b6e9NBd4YgXvK/damfVmtmxs1IuAk1VeSJZBKnCKlv090= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750943487; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Arkastc7FTqBBhA884vRzOj/VWCapeivXKRaS0y4Ts0=; b=RtUedumPs8RrNylBPvt7kbipGevAiT6ZDl35zN7kajFAo3TmiIK+mCbCHOMmoAkNN9sMOFRw7ugyyihq25jWXfOJ1F7TfDnq4qYUfUS2KeSSRy6Dk9rOspzS7LkURI0rO7CUyqom5GyePDk7oN+C777LOJ6mvSU+qNSX8tkr0Zo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 175094348714319.71937379843871; Thu, 26 Jun 2025 06:11:27 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1026356.1401572 (Exim 4.92) (envelope-from ) id 1uUmNl-0006lO-5v; Thu, 26 Jun 2025 13:11:13 +0000 Received: by outflank-mailman (output) from mailman id 1026356.1401572; Thu, 26 Jun 2025 13:11:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uUmNl-0006lE-2w; Thu, 26 Jun 2025 13:11:13 +0000 Received: by outflank-mailman (input) for mailman id 1026356; Thu, 26 Jun 2025 13:11:11 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uUmNj-0006jN-OE for xen-devel@lists.xenproject.org; Thu, 26 Jun 2025 13:11:11 +0000 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [2a00:1450:4864:20::432]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 068c1767-528f-11f0-b894-0df219b8e170; Thu, 26 Jun 2025 15:11:09 +0200 (CEST) Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-3a528243636so585550f8f.3 for ; Thu, 26 Jun 2025 06:11:09 -0700 (PDT) Received: from localhost.localdomain (253.226.6.51.dyn.plus.net. [51.6.226.253]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a6e806916esm7351356f8f.43.2025.06.26.06.11.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 06:11:08 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 068c1767-528f-11f0-b894-0df219b8e170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloud.com; s=cloud; t=1750943468; x=1751548268; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Arkastc7FTqBBhA884vRzOj/VWCapeivXKRaS0y4Ts0=; b=SyUxy1zTp61tg8DI6EjwgOBrWM7qt5xSJcHgBzAC71FNW/UEyJRTBtImyhx+OGiqtR LosteY0D7H0iuV98incwrUi2Gtb6WEEcopdRcVYVkIBg+XF+ZF6vQXOmIQua5sIyzCld 3QT9glxC0t5dE8JDxyJOeMKEsBNppXz+L23nU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750943468; x=1751548268; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Arkastc7FTqBBhA884vRzOj/VWCapeivXKRaS0y4Ts0=; b=rmS1i4GBtqdsbSJkRHMbhro2rHlVt2aON+Dc6ZFsuIs7VHGE18VVMie+qs+JB1+q9b nL8KQcs0SIqC8A7seTB3v1hEsgj/YmY9g4OZTNGXIgMESinVjHl2TRFGZwjEi0uiq7hG NJJ3VQxfXx+RGHSO5vIfdzgGPdrirFSU5TBUt0csYbBLmGcD2ZAgXrqZQGJOJy9xDFPO agnrTdNrqnziXJgxuPVz9YPMUpPmvyE127d6oOU4O0X64Ec1X53unR/FKQCHkWr4VxNi +YMCu/foog0pmEj6PCYpXNuJrDQ0aD6uh0uz6DGaJ7dUFpoCNgfQlXBU92j1T1KR5ep0 tJ1w== X-Gm-Message-State: AOJu0YzzujFW/InqIKejjwocWVG0+8D4JNGsWjzX4C7HciF0wc/fyMVV /3D4CEoopM0zhe96wJcfPBKctQHkuOJPbnSDqzkfhlcDfwWlZkFlKYP+6G8y982v+hOxBICvf5W mn8+RXaw= X-Gm-Gg: ASbGncu/+nvJfqYslR73W9ruw57Cl5FRcdx8w+54W3V6sD2t9iJAN9T1DVol9gy0sox vYwElYA/PXYrW6kh6ATf9qSkg1GbbyB4ZIGXtqR05Kod48FvUBfeYJVSCaT/NzcXtAegyluOyAt v76f90OKsY3LREUilkcgARMkZKIOpsNMve/Hk1cE3MR/5sScCV8VoZSDsbxl0YDwoDFKHLKpciP uoPlzKM1bPngEP0bJHCdzUamdGOa5MIirS+igOx4v7JVcZyrqjVSEorMswgXoda8tuvYi0QExne Yl2YV3xXwefIRJLZhS6R6ZbGuM5mwhkYhRai7aLlrK7UF+kCMXNVMDlhoMxKBu+jcF4l6NsWUXq 4T3lZ/LsX6aGTfZMDnFEfBHKtGsICfukw+OeveL+p X-Google-Smtp-Source: AGHT+IEMoyWamH+/GJbtG6xlOTCstBg1G51VJ6ogmc3sMopKuNX7Rw4BQ3S55LTrqTQnV2qkJs8Y5g== X-Received: by 2002:a05:6000:2484:b0:3a6:d604:a017 with SMTP id ffacd0b85a97d-3a6ed63d398mr5842184f8f.24.1750943468404; Thu, 26 Jun 2025 06:11:08 -0700 (PDT) From: Frediano Ziglio To: xen-devel@lists.xenproject.org Cc: Frediano Ziglio , "Daniel P. Smith" , =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= , Jan Beulich Subject: [PATCH v4 3/3] xen/efi: Update error flow for read_file function Date: Thu, 26 Jun 2025 14:10:55 +0100 Message-ID: <20250626131059.61894-4-frediano.ziglio@cloud.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250626131059.61894-1-frediano.ziglio@cloud.com> References: <20250626131059.61894-1-frediano.ziglio@cloud.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @cloud.com) X-ZM-MESSAGEID: 1750943487763116600 Content-Type: text/plain; charset="utf-8" Use more explicit goto statements to handle common error code path instead of a lot of if/else. Signed-off-by: Frediano Ziglio --- xen/common/efi/boot.c | 80 +++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c index 4cbf1aa894..f6e8d4726d 100644 --- a/xen/common/efi/boot.c +++ b/xen/common/efi/boot.c @@ -792,6 +792,8 @@ static bool __init read_file(EFI_FILE_HANDLE dir_handle= , CHAR16 *name, =20 if ( !name ) PrintErrMesg(L"No filename", EFI_OUT_OF_RESOURCES); + + what =3D L"Open"; if ( dir_handle ) ret =3D dir_handle->Open(dir_handle, &FileHandle, name, EFI_FILE_MODE_READ, 0); @@ -800,54 +802,58 @@ static bool __init read_file(EFI_FILE_HANDLE dir_hand= le, CHAR16 *name, if ( file =3D=3D &cfg && ret =3D=3D EFI_NOT_FOUND ) return false; if ( EFI_ERROR(ret) ) - what =3D L"Open"; - else - ret =3D FileHandle->SetPosition(FileHandle, -1); + goto fail; + + what =3D L"Seek"; + ret =3D FileHandle->SetPosition(FileHandle, -1); if ( EFI_ERROR(ret) ) - what =3D what ?: L"Seek"; - else - ret =3D FileHandle->GetPosition(FileHandle, &size); + goto fail; + + what =3D L"Get size"; + ret =3D FileHandle->GetPosition(FileHandle, &size); if ( EFI_ERROR(ret) ) - what =3D what ?: L"Get size"; - else - ret =3D FileHandle->SetPosition(FileHandle, 0); + goto fail; + + what =3D L"Seek"; + ret =3D FileHandle->SetPosition(FileHandle, 0); if ( EFI_ERROR(ret) ) - what =3D what ?: L"Seek"; - else - { - file->addr =3D min(1UL << (32 + PAGE_SHIFT), - HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START); - ret =3D efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData, - PFN_UP(size), &file->addr); - } + goto fail; + + what =3D L"Allocation"; + file->addr =3D min(1UL << (32 + PAGE_SHIFT), + HYPERVISOR_VIRT_END - DIRECTMAP_VIRT_START); + ret =3D efi_bs->AllocatePages(AllocateMaxAddress, EfiLoaderData, + PFN_UP(size), &file->addr); if ( EFI_ERROR(ret) ) - what =3D what ?: L"Allocation"; - else - { - file->need_to_free =3D true; - file->size =3D size; - handle_file_info(name, file, options); + goto fail; =20 - ret =3D FileHandle->Read(FileHandle, &file->size, file->str); - if ( !EFI_ERROR(ret) && file->size !=3D size ) - ret =3D EFI_ABORTED; - if ( EFI_ERROR(ret) ) - what =3D L"Read"; - } + file->need_to_free =3D true; + file->size =3D size; + handle_file_info(name, file, options); =20 - if ( FileHandle ) - FileHandle->Close(FileHandle); + what =3D L"Read"; + ret =3D FileHandle->Read(FileHandle, &file->size, file->str); + if ( !EFI_ERROR(ret) && file->size !=3D size ) + ret =3D EFI_ABORTED; + if ( EFI_ERROR(ret) ) + goto fail; =20 - if ( what ) - { - PrintErr(what); - PrintErr(L" failed for "); - PrintErrMesg(name, ret); - } + FileHandle->Close(FileHandle); =20 efi_arch_flush_dcache_area(file->ptr, file->size); =20 return true; + +fail: + if ( FileHandle ) + FileHandle->Close(FileHandle); + + PrintErr(what); + PrintErr(L" failed for "); + PrintErrMesg(name, ret); + + /* not reached */ + return false; } =20 typedef struct __packed { --=20 2.43.0