firmware: gsmi: remove sysfs entries when unload the module
PATCH 1/1 firmware: gsmi: remove sysfs entries when unload the module
This patch removes sysfs entries in gsmi_exit() and gsmi_init() error path.
Also move the driver successfully loaded message to the end of gsmi_init() and return proper error if register_efivars() fails.
--- drivers/firmware/google/gsmi.c | 19 +++++++++++++------ 1 files changed, 13 insertions(+), 6 deletions(-)
drivers/firmware/google/gsmi.c +13 -6
@@ -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);
Signature · 1 line
1.7.4.1
Quoted 7 lines · Axel Lin
This patch removes sysfs entries in
gsmi_exit()andgsmi_init()error path.Also move the driver successfully loaded message to the end of
gsmi_init()and return proper error ifregister_efivars()fails.Signed-off-by Axel Lin <[email protected]>
Greg, can you pick this up in drivers-core?
Quoted 4 lines · Mike Waychison
Quoted 3 lines · Axel Lin
This patch removes sysfs entries in
gsmi_exit()andgsmi_init()error path.
Quoted 8 lines
Quoted 4 lines
Also move the driver successfully loaded message to the end of
gsmi_init()and return proper error ifregister_efivars()fails.Signed-off-by Axel Lin <[email protected]>Acked-by Mike Waychison <[email protected]>Greg, can you pick this up in drivers-core?
I already did last week :)