|
@@ -869,8 +869,6 @@ static __init int gsmi_init(void)
|
|
|
goto out_err;
|
|
|
}
|
|
|
|
|
|
- printk(KERN_INFO "gsmi version " DRIVER_VERSION " loaded\n");
|
|
|
-
|
|
|
/* Register in the firmware directory */
|
|
|
ret = -ENOMEM;
|
|
|
gsmi_kobj = kobject_create_and_add("gsmi", firmware_kobj);
|
|
@@ -890,12 +888,13 @@ static __init int gsmi_init(void)
|
|
|
ret = sysfs_create_files(gsmi_kobj, gsmi_attrs);
|
|
|
if (ret) {
|
|
|
printk(KERN_INFO "gsmi: Failed to add attrs");
|
|
|
- goto out_err;
|
|
|
+ goto out_remove_bin_file;
|
|
|
}
|
|
|
|
|
|
- if (register_efivars(&efivars, &efivar_ops, gsmi_kobj)) {
|
|
|
+ ret = register_efivars(&efivars, &efivar_ops, gsmi_kobj);
|
|
|
+ if (ret) {
|
|
|
printk(KERN_INFO "gsmi: Failed to register efivars\n");
|
|
|
- goto out_err;
|
|
|
+ goto out_remove_sysfs_files;
|
|
|
}
|
|
|
|
|
|
register_reboot_notifier(&gsmi_reboot_notifier);
|
|
@@ -903,9 +902,15 @@ static __init int gsmi_init(void)
|
|
|
atomic_notifier_chain_register(&panic_notifier_list,
|
|
|
&gsmi_panic_notifier);
|
|
|
|
|
|
+ printk(KERN_INFO "gsmi version " DRIVER_VERSION " loaded\n");
|
|
|
+
|
|
|
return 0;
|
|
|
|
|
|
- out_err:
|
|
|
+out_remove_sysfs_files:
|
|
|
+ sysfs_remove_files(gsmi_kobj, gsmi_attrs);
|
|
|
+out_remove_bin_file:
|
|
|
+ sysfs_remove_bin_file(gsmi_kobj, &eventlog_bin_attr);
|
|
|
+out_err:
|
|
|
kobject_put(gsmi_kobj);
|
|
|
gsmi_buf_free(gsmi_dev.param_buf);
|
|
|
gsmi_buf_free(gsmi_dev.data_buf);
|
|
@@ -925,6 +930,8 @@ static void __exit gsmi_exit(void)
|
|
|
&gsmi_panic_notifier);
|
|
|
unregister_efivars(&efivars);
|
|
|
|
|
|
+ sysfs_remove_files(gsmi_kobj, gsmi_attrs);
|
|
|
+ sysfs_remove_bin_file(gsmi_kobj, &eventlog_bin_attr);
|
|
|
kobject_put(gsmi_kobj);
|
|
|
gsmi_buf_free(gsmi_dev.param_buf);
|
|
|
gsmi_buf_free(gsmi_dev.data_buf);
|