efi: pstore: move workqueue handling out of efivars
The worker thread that gets kicked off to sync the state of the EFI variable list is only used by the EFI pstore implementation, and is defined in its source file. So let's move its scheduling there as well. Since our efivar_init() scan will bail on duplicate entries, there is no need to disable the workqueue like we did before, so we can run it unconditionally. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
This commit is contained in:
@@ -32,10 +32,6 @@ static struct efivars *__efivars;
|
||||
*/
|
||||
static DEFINE_SEMAPHORE(efivars_lock);
|
||||
|
||||
static bool efivar_wq_enabled = true;
|
||||
DECLARE_WORK(efivar_work, NULL);
|
||||
EXPORT_SYMBOL_GPL(efivar_work);
|
||||
|
||||
static bool
|
||||
validate_device_path(efi_char16_t *var_name, int match, u8 *buffer,
|
||||
unsigned long len)
|
||||
@@ -391,13 +387,6 @@ static void dup_variable_bug(efi_char16_t *str16, efi_guid_t *vendor_guid,
|
||||
size_t i, len8 = len16 / sizeof(efi_char16_t);
|
||||
char *str8;
|
||||
|
||||
/*
|
||||
* Disable the workqueue since the algorithm it uses for
|
||||
* detecting new variables won't work with this buggy
|
||||
* implementation of GetNextVariableName().
|
||||
*/
|
||||
efivar_wq_enabled = false;
|
||||
|
||||
str8 = kzalloc(len8, GFP_KERNEL);
|
||||
if (!str8)
|
||||
return;
|
||||
@@ -1157,16 +1146,6 @@ struct kobject *efivars_kobject(void)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(efivars_kobject);
|
||||
|
||||
/**
|
||||
* efivar_run_worker - schedule the efivar worker thread
|
||||
*/
|
||||
void efivar_run_worker(void)
|
||||
{
|
||||
if (efivar_wq_enabled)
|
||||
schedule_work(&efivar_work);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(efivar_run_worker);
|
||||
|
||||
/**
|
||||
* efivars_register - register an efivars
|
||||
* @efivars: efivars to register
|
||||
|
Reference in New Issue
Block a user