Merge tag 'efi-next-for-v6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi
[sfrench/cifs-2.6.git] / fs / efivarfs / super.c
index 46c6446ec28045c73f06d3bdac1b323a477bf96c..b784c393a5041e05abcf06440b6fddba013debba 100644 (file)
@@ -48,10 +48,16 @@ static int efivarfs_statfs(struct dentry *dentry, struct kstatfs *buf)
        u64 storage_space, remaining_space, max_variable_size;
        efi_status_t status;
 
-       status = efivar_query_variable_info(attr, &storage_space, &remaining_space,
-                                           &max_variable_size);
-       if (status != EFI_SUCCESS)
-               return efi_status_to_err(status);
+       /* Some UEFI firmware does not implement QueryVariableInfo() */
+       storage_space = remaining_space = 0;
+       if (efi_rt_services_supported(EFI_RT_SUPPORTED_QUERY_VARIABLE_INFO)) {
+               status = efivar_query_variable_info(attr, &storage_space,
+                                                   &remaining_space,
+                                                   &max_variable_size);
+               if (status != EFI_SUCCESS && status != EFI_UNSUPPORTED)
+                       pr_warn_ratelimited("query_variable_info() failed: 0x%lx\n",
+                                           status);
+       }
 
        /*
         * This is not a normal filesystem, so no point in pretending it has a block