diff options
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/platform/efi/efi.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index c89c245eff40..3f96a487aa2a 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c | |||
@@ -1018,7 +1018,12 @@ efi_status_t efi_query_variable_store(u32 attributes, unsigned long size) | |||
1018 | if (status != EFI_SUCCESS) | 1018 | if (status != EFI_SUCCESS) |
1019 | return status; | 1019 | return status; |
1020 | 1020 | ||
1021 | if (!storage_size || size > remaining_size || size > max_size || | 1021 | if (!max_size && remaining_size > size) |
1022 | printk_once(KERN_ERR FW_BUG "Broken EFI implementation" | ||
1023 | " is returning MaxVariableSize=0\n"); | ||
1024 | |||
1025 | if (!storage_size || size > remaining_size || | ||
1026 | (max_size && size > max_size) || | ||
1022 | (remaining_size - size) < (storage_size / 2)) | 1027 | (remaining_size - size) < (storage_size / 2)) |
1023 | return EFI_OUT_OF_RESOURCES; | 1028 | return EFI_OUT_OF_RESOURCES; |
1024 | 1029 | ||