]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared/bootspec: treat empty EFI vars as missing
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 6 Mar 2019 21:45:37 +0000 (22:45 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 6 Mar 2019 21:45:37 +0000 (22:45 +0100)
We shouldn't really make any fuss about this. Also, change 'var' to 'variable'
for consistency with systemctl.c.

src/shared/bootspec.c
src/shared/efivars.c

index 59447d03b4874ddb405a7783f549ce9eadb81c70..fea8eb830af74462ee2fa97537481412b644c23d 100644 (file)
@@ -664,12 +664,12 @@ int boot_entries_load_config(
 
         if (is_efi_boot()) {
                 r = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderEntryOneShot", &config->entry_oneshot);
-                if (r < 0 && r != -ENOENT)
-                        return log_error_errno(r, "Failed to read EFI var \"LoaderEntryOneShot\": %m");
+                if (r < 0 && !IN_SET(r, -ENOENT, -ENODATA))
+                        return log_error_errno(r, "Failed to read EFI variable \"LoaderEntryOneShot\": %m");
 
                 r = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderEntryDefault", &config->entry_default);
-                if (r < 0 && r != -ENOENT)
-                        return log_error_errno(r, "Failed to read EFI var \"LoaderEntryDefault\": %m");
+                if (r < 0 && !IN_SET(r, -ENOENT, -ENODATA))
+                        return log_error_errno(r, "Failed to read EFI variable \"LoaderEntryDefault\": %m");
         }
 
         config->default_entry = boot_entries_select_default(config);
index caae7b91386e15b406775127aa230d9ec22aed15..885f03118a5fbd133474281e6075a968137f4e0c 100644 (file)
@@ -223,7 +223,7 @@ int efi_get_variable(
         if (fstat(fd, &st) < 0)
                 return -errno;
         if (st.st_size < 4)
-                return -EIO;
+                return -ENODATA;
         if (st.st_size > 4*1024*1024 + 4)
                 return -E2BIG;