Commit ade7fd90 authored by Johan Hovold's avatar Johan Hovold Committed by Ard Biesheuvel

efi: efivars: drop kobject from efivars_register()

Since commit 0f5b2c69 ("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: default avatarJohan Hovold <johan+linaro@kernel.org>
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
parent 2a5b4ccf
...@@ -197,7 +197,7 @@ static int generic_ops_register(void) ...@@ -197,7 +197,7 @@ static int generic_ops_register(void)
generic_ops.set_variable = efi.set_variable; generic_ops.set_variable = efi.set_variable;
generic_ops.set_variable_nonblocking = efi.set_variable_nonblocking; 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) static void generic_ops_unregister(void)
......
...@@ -40,37 +40,30 @@ static efi_status_t check_var_size(bool nonblocking, u32 attributes, ...@@ -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, * @return true iff evivars is currently registered
* otherwise return the kobject used at registration time.
*/ */
struct kobject *efivars_kobject(void) bool efivar_is_available(void)
{ {
if (!__efivars) return __efivars != NULL;
return NULL;
return __efivars->kobject;
} }
EXPORT_SYMBOL_GPL(efivars_kobject); EXPORT_SYMBOL_GPL(efivar_is_available);
/** /**
* efivars_register - register an efivars * efivars_register - register an efivars
* @efivars: efivars to register * @efivars: efivars to register
* @ops: efivars operations * @ops: efivars operations
* @kobject: @efivars-specific kobject
* *
* Only a single efivars can be registered at any time. * Only a single efivars can be registered at any time.
*/ */
int efivars_register(struct efivars *efivars, int efivars_register(struct efivars *efivars,
const struct efivar_operations *ops, const struct efivar_operations *ops)
struct kobject *kobject)
{ {
if (down_interruptible(&efivars_lock)) if (down_interruptible(&efivars_lock))
return -EINTR; return -EINTR;
efivars->ops = ops; efivars->ops = ops;
efivars->kobject = kobject;
__efivars = efivars; __efivars = efivars;
......
...@@ -1029,7 +1029,7 @@ static __init int gsmi_init(void) ...@@ -1029,7 +1029,7 @@ static __init int gsmi_init(void)
} }
#ifdef CONFIG_EFI #ifdef CONFIG_EFI
ret = efivars_register(&efivars, &efivar_ops, gsmi_kobj); ret = efivars_register(&efivars, &efivar_ops);
if (ret) { if (ret) {
printk(KERN_INFO "gsmi: Failed to register efivars\n"); printk(KERN_INFO "gsmi: Failed to register efivars\n");
sysfs_remove_files(gsmi_kobj, gsmi_attrs); sysfs_remove_files(gsmi_kobj, gsmi_attrs);
......
...@@ -256,7 +256,7 @@ static struct file_system_type efivarfs_type = { ...@@ -256,7 +256,7 @@ static struct file_system_type efivarfs_type = {
static __init int efivarfs_init(void) static __init int efivarfs_init(void)
{ {
if (!efivars_kobject()) if (!efivar_is_available())
return -ENODEV; return -ENODEV;
return register_filesystem(&efivarfs_type); return register_filesystem(&efivarfs_type);
......
...@@ -1039,7 +1039,6 @@ struct efivar_operations { ...@@ -1039,7 +1039,6 @@ struct efivar_operations {
struct efivars { struct efivars {
struct kset *kset; struct kset *kset;
struct kobject *kobject;
const struct efivar_operations *ops; const struct efivar_operations *ops;
}; };
...@@ -1053,10 +1052,14 @@ struct efivars { ...@@ -1053,10 +1052,14 @@ struct efivars {
#define EFI_VAR_NAME_LEN 1024 #define EFI_VAR_NAME_LEN 1024
int efivars_register(struct efivars *efivars, int efivars_register(struct efivars *efivars,
const struct efivar_operations *ops, const struct efivar_operations *ops);
struct kobject *kobject);
int efivars_unregister(struct efivars *efivars); 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); int efivar_supports_writes(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment