89 lines
3.3 KiB
Diff
89 lines
3.3 KiB
Diff
|
From 8cbb38625364640f390b2df2cda44ff3877fb16d Mon Sep 17 00:00:00 2001
|
||
|
From: Jan Janssen <medhefgo@web.de>
|
||
|
Date: Mon, 14 Nov 2022 14:37:13 +0100
|
||
|
Subject: [PATCH] boot: Do not require a loaded image path
|
||
|
|
||
|
If the device path to text protocol is not available (looking angrily at
|
||
|
Apple) we would fail to boot because we cannot get the loaded image
|
||
|
path. As this is only used for cosmetic purposes, we can just silently
|
||
|
continue.
|
||
|
|
||
|
Fixes: #25363
|
||
|
(cherry picked from commit af7ef648cddeb96da525de2410565d166f75cc96)
|
||
|
|
||
|
Related: #2138081
|
||
|
---
|
||
|
src/boot/efi/boot.c | 13 +++----------
|
||
|
1 file changed, 3 insertions(+), 10 deletions(-)
|
||
|
|
||
|
diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c
|
||
|
index 17d4ec2d09..b490a1d972 100644
|
||
|
--- a/src/boot/efi/boot.c
|
||
|
+++ b/src/boot/efi/boot.c
|
||
|
@@ -471,7 +471,6 @@ static void print_status(Config *config, char16_t *loaded_image_path) {
|
||
|
_cleanup_free_ char16_t *device_part_uuid = NULL;
|
||
|
|
||
|
assert(config);
|
||
|
- assert(loaded_image_path);
|
||
|
|
||
|
clear_screen(COLOR_NORMAL);
|
||
|
console_query_mode(&x_max, &y_max);
|
||
|
@@ -619,7 +618,6 @@ static bool menu_run(
|
||
|
|
||
|
assert(config);
|
||
|
assert(chosen_entry);
|
||
|
- assert(loaded_image_path);
|
||
|
|
||
|
EFI_STATUS err;
|
||
|
UINTN visible_max = 0;
|
||
|
@@ -1478,7 +1476,7 @@ static void config_entry_add_type1(
|
||
|
entry->loader = xstra_to_path(value);
|
||
|
|
||
|
/* do not add an entry for ourselves */
|
||
|
- if (loaded_image_path && strcaseeq16(entry->loader, loaded_image_path)) {
|
||
|
+ if (strcaseeq16(entry->loader, loaded_image_path)) {
|
||
|
entry->type = LOADER_UNDEFINED;
|
||
|
break;
|
||
|
}
|
||
|
@@ -1908,12 +1906,11 @@ static ConfigEntry *config_entry_add_loader_auto(
|
||
|
assert(root_dir);
|
||
|
assert(id);
|
||
|
assert(title);
|
||
|
- assert(loader || loaded_image_path);
|
||
|
|
||
|
if (!config->auto_entries)
|
||
|
return NULL;
|
||
|
|
||
|
- if (loaded_image_path) {
|
||
|
+ if (!loader) {
|
||
|
loader = L"\\EFI\\BOOT\\BOOT" EFI_MACHINE_TYPE_NAME ".efi";
|
||
|
|
||
|
/* We are trying to add the default EFI loader here,
|
||
|
@@ -2562,7 +2559,6 @@ static void export_variables(
|
||
|
char16_t uuid[37];
|
||
|
|
||
|
assert(loaded_image);
|
||
|
- assert(loaded_image_path);
|
||
|
|
||
|
efivar_set_time_usec(LOADER_GUID, L"LoaderTimeInitUSec", init_usec);
|
||
|
efivar_set(LOADER_GUID, L"LoaderInfo", L"systemd-boot " GIT_VERSION, 0);
|
||
|
@@ -2591,7 +2587,6 @@ static void config_load_all_entries(
|
||
|
|
||
|
assert(config);
|
||
|
assert(loaded_image);
|
||
|
- assert(loaded_image_path);
|
||
|
assert(root_dir);
|
||
|
|
||
|
config_load_defaults(config, root_dir);
|
||
|
@@ -2676,9 +2671,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
|
||
|
if (err != EFI_SUCCESS)
|
||
|
return log_error_status_stall(err, L"Error getting a LoadedImageProtocol handle: %r", err);
|
||
|
|
||
|
- err = device_path_to_str(loaded_image->FilePath, &loaded_image_path);
|
||
|
- if (err != EFI_SUCCESS)
|
||
|
- return log_error_status_stall(err, L"Error getting loaded image path: %r", err);
|
||
|
+ (void) device_path_to_str(loaded_image->FilePath, &loaded_image_path);
|
||
|
|
||
|
export_variables(loaded_image, loaded_image_path, init_usec);
|
||
|
|