|
@@ -1018,7 +1018,12 @@ efi_status_t efi_query_variable_store(u32 attributes, unsigned long size)
|
|
|
if (status != EFI_SUCCESS)
|
|
|
return status;
|
|
|
|
|
|
- if (!storage_size || size > remaining_size || size > max_size ||
|
|
|
+ if (!max_size && remaining_size > size)
|
|
|
+ printk_once(KERN_ERR FW_BUG "Broken EFI implementation"
|
|
|
+ " is returning MaxVariableSize=0\n");
|
|
|
+
|
|
|
+ if (!storage_size || size > remaining_size ||
|
|
|
+ (max_size && size > max_size) ||
|
|
|
(remaining_size - size) < (storage_size / 2))
|
|
|
return EFI_OUT_OF_RESOURCES;
|
|
|
|