From 756f3052fc5e1b409380a76abf3781bcb4a55a75 Mon Sep 17 00:00:00 2001 From: Axel Lin Date: Wed, 29 Jun 2011 15:57:53 +0800 Subject: [PATCH] --- yaml --- r: 259189 b: refs/heads/master c: 1e4de81653bae3f5e6d06e3384853d31d564bbec h: refs/heads/master i: 259187: d70bd080a0c9c6f06c59d469fa99a8db716f9a5d v: v3 --- [refs] | 2 +- trunk/drivers/firmware/google/gsmi.c | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index f3a46fe79db0..7ede8be77fa6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 48d9854285635dd8b0535af7cb0d508b08db9e98 +refs/heads/master: 1e4de81653bae3f5e6d06e3384853d31d564bbec diff --git a/trunk/drivers/firmware/google/gsmi.c b/trunk/drivers/firmware/google/gsmi.c index fa7f0b3e81dd..68810fd1a59d 100644 --- a/trunk/drivers/firmware/google/gsmi.c +++ b/trunk/drivers/firmware/google/gsmi.c @@ -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);