]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared/bootspec: do not fail on errors when reading EFI vars 11911/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 6 Mar 2019 21:49:52 +0000 (22:49 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 6 Mar 2019 21:49:52 +0000 (22:49 +0100)
It seems that my EFI storage is corrupted. The kernel reports the file as present, but returns
an error when reading. Nevertheless, this shouldn't prevent me from reading the entry
list.

Fixes #11909.

src/shared/bootspec.c

index fea8eb830af74462ee2fa97537481412b644c23d..afcf6f7ac13eaabcf9fb7a2207487fe59e908e50 100644 (file)
@@ -664,12 +664,18 @@ int boot_entries_load_config(
 
         if (is_efi_boot()) {
                 r = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderEntryOneShot", &config->entry_oneshot);
-                if (r < 0 && !IN_SET(r, -ENOENT, -ENODATA))
-                        return log_error_errno(r, "Failed to read EFI variable \"LoaderEntryOneShot\": %m");
+                if (r < 0 && !IN_SET(r, -ENOENT, -ENODATA)) {
+                        log_warning_errno(r, "Failed to read EFI variable \"LoaderEntryOneShot\": %m");
+                        if (r == -ENOMEM)
+                                return r;
+                }
 
                 r = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderEntryDefault", &config->entry_default);
-                if (r < 0 && !IN_SET(r, -ENOENT, -ENODATA))
-                        return log_error_errno(r, "Failed to read EFI variable \"LoaderEntryDefault\": %m");
+                if (r < 0 && !IN_SET(r, -ENOENT, -ENODATA)) {
+                        log_warning_errno(r, "Failed to read EFI variable \"LoaderEntryDefault\": %m");
+                        if (r == -ENOMEM)
+                                return r;
+                }
         }
 
         config->default_entry = boot_entries_select_default(config);