]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/firmware/efi/vars.c
efi: locking fix in efivar_entry_set_safe()
[karo-tx-linux.git] / drivers / firmware / efi / vars.c
index 96d328b21c3e408918bdfb779dc11c6eb7574abb..391c67b182d9b282681890cd04b98c0183023abc 100644 (file)
@@ -622,10 +622,12 @@ int efivar_entry_set_safe(efi_char16_t *name, efi_guid_t vendor, u32 attributes,
        if (!ops->query_variable_store)
                return -ENOSYS;
 
-       if (!block && spin_trylock_irqsave(&__efivars->lock, flags))
-               return -EBUSY;
-       else
+       if (!block) {
+               if (!spin_trylock_irqsave(&__efivars->lock, flags))
+                       return -EBUSY;
+       } else {
                spin_lock_irqsave(&__efivars->lock, flags);
+       }
 
        status = check_var_size(attributes, size + ucs2_strsize(name, 1024));
        if (status != EFI_SUCCESS) {