Commit af5a29ae authored by Mathias Krause's avatar Mathias Krause Committed by Matt Fleming

efivarfs: Allow unloading when build as module

There is no need to keep the module loaded when it serves no function in
case the EFI runtime services are disabled. Return an error in this case
so loading the module will fail.

Also supply a module_exit function to allow unloading the module.

Last, but not least, set the owner of the file_system_type struct.

Cc: Jeremy Kerr <jk@ozlabs.org>
Cc: Matthew Garrett <matthew.garrett@nebula.com>
Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
parent cac7f242
...@@ -236,6 +236,7 @@ static void efivarfs_kill_sb(struct super_block *sb) ...@@ -236,6 +236,7 @@ static void efivarfs_kill_sb(struct super_block *sb)
} }
static struct file_system_type efivarfs_type = { static struct file_system_type efivarfs_type = {
.owner = THIS_MODULE,
.name = "efivarfs", .name = "efivarfs",
.mount = efivarfs_mount, .mount = efivarfs_mount,
.kill_sb = efivarfs_kill_sb, .kill_sb = efivarfs_kill_sb,
...@@ -244,17 +245,23 @@ static struct file_system_type efivarfs_type = { ...@@ -244,17 +245,23 @@ static struct file_system_type efivarfs_type = {
static __init int efivarfs_init(void) static __init int efivarfs_init(void)
{ {
if (!efi_enabled(EFI_RUNTIME_SERVICES)) if (!efi_enabled(EFI_RUNTIME_SERVICES))
return 0; return -ENODEV;
if (!efivars_kobject()) if (!efivars_kobject())
return 0; return -ENODEV;
return register_filesystem(&efivarfs_type); return register_filesystem(&efivarfs_type);
} }
static __exit void efivarfs_exit(void)
{
unregister_filesystem(&efivarfs_type);
}
MODULE_AUTHOR("Matthew Garrett, Jeremy Kerr"); MODULE_AUTHOR("Matthew Garrett, Jeremy Kerr");
MODULE_DESCRIPTION("EFI Variable Filesystem"); MODULE_DESCRIPTION("EFI Variable Filesystem");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS_FS("efivarfs"); MODULE_ALIAS_FS("efivarfs");
module_init(efivarfs_init); module_init(efivarfs_init);
module_exit(efivarfs_exit);
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