efi: efivars: drop kobject from efivars_register()
Since commit 0f5b2c69a4
("efi: vars: Remove deprecated 'efivars' sysfs
interface") and the removal of the sysfs interface there are no users of
the efivars kobject.
Drop the kobject argument from efivars_register() and add a new
efivar_is_available() helper in favour of the old efivars_kobject().
Note that the new helper uses the prefix 'efivar' (i.e. without an 's')
for consistency with efivar_supports_writes() and the rest of the
interface (except the registration functions).
For the benefit of drivers with optional EFI support, also provide a
dummy implementation of efivar_is_available().
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
This commit is contained in:
parent
2a5b4ccf0d
commit
ade7fd908d
|
@ -197,7 +197,7 @@ static int generic_ops_register(void)
|
|||
generic_ops.set_variable = efi.set_variable;
|
||||
generic_ops.set_variable_nonblocking = efi.set_variable_nonblocking;
|
||||
}
|
||||
return efivars_register(&generic_efivars, &generic_ops, efi_kobj);
|
||||
return efivars_register(&generic_efivars, &generic_ops);
|
||||
}
|
||||
|
||||
static void generic_ops_unregister(void)
|
||||
|
|
|
@ -40,37 +40,30 @@ static efi_status_t check_var_size(bool nonblocking, u32 attributes,
|
|||
}
|
||||
|
||||
/**
|
||||
* efivars_kobject - get the kobject for the registered efivars
|
||||
* efivar_is_available - check if efivars is available
|
||||
*
|
||||
* If efivars_register() has not been called we return NULL,
|
||||
* otherwise return the kobject used at registration time.
|
||||
* @return true iff evivars is currently registered
|
||||
*/
|
||||
struct kobject *efivars_kobject(void)
|
||||
bool efivar_is_available(void)
|
||||
{
|
||||
if (!__efivars)
|
||||
return NULL;
|
||||
|
||||
return __efivars->kobject;
|
||||
return __efivars != NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(efivars_kobject);
|
||||
EXPORT_SYMBOL_GPL(efivar_is_available);
|
||||
|
||||
/**
|
||||
* efivars_register - register an efivars
|
||||
* @efivars: efivars to register
|
||||
* @ops: efivars operations
|
||||
* @kobject: @efivars-specific kobject
|
||||
*
|
||||
* Only a single efivars can be registered at any time.
|
||||
*/
|
||||
int efivars_register(struct efivars *efivars,
|
||||
const struct efivar_operations *ops,
|
||||
struct kobject *kobject)
|
||||
const struct efivar_operations *ops)
|
||||
{
|
||||
if (down_interruptible(&efivars_lock))
|
||||
return -EINTR;
|
||||
|
||||
efivars->ops = ops;
|
||||
efivars->kobject = kobject;
|
||||
|
||||
__efivars = efivars;
|
||||
|
||||
|
|
|
@ -1029,7 +1029,7 @@ static __init int gsmi_init(void)
|
|||
}
|
||||
|
||||
#ifdef CONFIG_EFI
|
||||
ret = efivars_register(&efivars, &efivar_ops, gsmi_kobj);
|
||||
ret = efivars_register(&efivars, &efivar_ops);
|
||||
if (ret) {
|
||||
printk(KERN_INFO "gsmi: Failed to register efivars\n");
|
||||
sysfs_remove_files(gsmi_kobj, gsmi_attrs);
|
||||
|
|
|
@ -256,7 +256,7 @@ static struct file_system_type efivarfs_type = {
|
|||
|
||||
static __init int efivarfs_init(void)
|
||||
{
|
||||
if (!efivars_kobject())
|
||||
if (!efivar_is_available())
|
||||
return -ENODEV;
|
||||
|
||||
return register_filesystem(&efivarfs_type);
|
||||
|
|
|
@ -1039,7 +1039,6 @@ struct efivar_operations {
|
|||
|
||||
struct efivars {
|
||||
struct kset *kset;
|
||||
struct kobject *kobject;
|
||||
const struct efivar_operations *ops;
|
||||
};
|
||||
|
||||
|
@ -1053,10 +1052,14 @@ struct efivars {
|
|||
#define EFI_VAR_NAME_LEN 1024
|
||||
|
||||
int efivars_register(struct efivars *efivars,
|
||||
const struct efivar_operations *ops,
|
||||
struct kobject *kobject);
|
||||
const struct efivar_operations *ops);
|
||||
int efivars_unregister(struct efivars *efivars);
|
||||
struct kobject *efivars_kobject(void);
|
||||
|
||||
#ifdef CONFIG_EFI
|
||||
bool efivar_is_available(void);
|
||||
#else
|
||||
static inline bool efivar_is_available(void) { return false; }
|
||||
#endif
|
||||
|
||||
int efivar_supports_writes(void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue