efi: detect containers in is_efi_boot()

Let's make sure that we never assume we booted up in EFI mode if we are
run in a container.
This commit is contained in:
Lennart Poettering 2018-06-22 18:40:43 +02:00
parent a36b411ea2
commit bb161cdc24
1 changed files with 5 additions and 2 deletions

View File

@ -63,7 +63,10 @@ struct device_path {
} _packed_;
bool is_efi_boot(void) {
return access("/sys/firmware/efi", F_OK) >= 0;
if (detect_container() > 0)
return false;
return access("/sys/firmware/efi/", F_OK) >= 0;
}
static int read_flag(const char *varname) {
@ -97,7 +100,7 @@ int efi_reboot_to_firmware_supported(void) {
size_t s;
int r;
if (!is_efi_boot() || detect_container() > 0)
if (!is_efi_boot())
return -EOPNOTSUPP;
r = efi_get_variable(EFI_VENDOR_GLOBAL, "OsIndicationsSupported", NULL, &v, &s);