diff options
author | Henrique de Moraes Holschuh <hmh@hmh.eng.br> | 2007-02-06 16:13:44 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2007-02-09 15:39:47 -0500 |
commit | 3945ac36af3da6014cde9836c5acc5b3adaaa379 (patch) | |
tree | a8b8c06f44a2948cb97e97d46a9a56838dc3d2a8 /drivers/acpi/ibm_acpi.c | |
parent | a3c94e5c5921b0fd75b33042ca598aee52f1f7b9 (diff) |
ACPI: ibm-acpi: cleanup init and exit paths
Fix a small memory leak on module removal, and other
assorted minor cleanups on the module init codepath.
Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/ibm_acpi.c')
-rw-r--r-- | drivers/acpi/ibm_acpi.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/acpi/ibm_acpi.c b/drivers/acpi/ibm_acpi.c index c6144ca66638..2429e1180fa9 100644 --- a/drivers/acpi/ibm_acpi.c +++ b/drivers/acpi/ibm_acpi.c | |||
@@ -496,6 +496,10 @@ static int ibm_acpi_driver_init(void) | |||
496 | printk(IBM_INFO "%s v%s\n", IBM_DESC, IBM_VERSION); | 496 | printk(IBM_INFO "%s v%s\n", IBM_DESC, IBM_VERSION); |
497 | printk(IBM_INFO "%s\n", IBM_URL); | 497 | printk(IBM_INFO "%s\n", IBM_URL); |
498 | 498 | ||
499 | if (ibm_thinkpad_ec_found) | ||
500 | printk(IBM_INFO "ThinkPad EC firmware %s\n", | ||
501 | ibm_thinkpad_ec_found); | ||
502 | |||
499 | return 0; | 503 | return 0; |
500 | } | 504 | } |
501 | 505 | ||
@@ -2617,7 +2621,7 @@ static void __init ibm_handle_init(char *name, | |||
2617 | ibm_handle_init(#object, &object##_handle, *object##_parent, \ | 2621 | ibm_handle_init(#object, &object##_handle, *object##_parent, \ |
2618 | object##_paths, ARRAY_SIZE(object##_paths), &object##_path) | 2622 | object##_paths, ARRAY_SIZE(object##_paths), &object##_path) |
2619 | 2623 | ||
2620 | static int set_ibm_param(const char *val, struct kernel_param *kp) | 2624 | static int __init set_ibm_param(const char *val, struct kernel_param *kp) |
2621 | { | 2625 | { |
2622 | unsigned int i; | 2626 | unsigned int i; |
2623 | 2627 | ||
@@ -2659,7 +2663,8 @@ static void acpi_ibm_exit(void) | |||
2659 | for (i = ARRAY_SIZE(ibms) - 1; i >= 0; i--) | 2663 | for (i = ARRAY_SIZE(ibms) - 1; i >= 0; i--) |
2660 | ibm_exit(&ibms[i]); | 2664 | ibm_exit(&ibms[i]); |
2661 | 2665 | ||
2662 | remove_proc_entry(IBM_DIR, acpi_root_dir); | 2666 | if (proc_dir) |
2667 | remove_proc_entry(IBM_DIR, acpi_root_dir); | ||
2663 | 2668 | ||
2664 | if (ibm_thinkpad_ec_found) | 2669 | if (ibm_thinkpad_ec_found) |
2665 | kfree(ibm_thinkpad_ec_found); | 2670 | kfree(ibm_thinkpad_ec_found); |
@@ -2710,9 +2715,6 @@ static int __init acpi_ibm_init(void) | |||
2710 | 2715 | ||
2711 | /* Models with newer firmware report the EC in DMI */ | 2716 | /* Models with newer firmware report the EC in DMI */ |
2712 | ibm_thinkpad_ec_found = check_dmi_for_ec(); | 2717 | ibm_thinkpad_ec_found = check_dmi_for_ec(); |
2713 | if (ibm_thinkpad_ec_found) | ||
2714 | printk(IBM_INFO "ThinkPad EC firmware %s\n", | ||
2715 | ibm_thinkpad_ec_found); | ||
2716 | 2718 | ||
2717 | /* these handles are not required */ | 2719 | /* these handles are not required */ |
2718 | IBM_HANDLE_INIT(vid); | 2720 | IBM_HANDLE_INIT(vid); |
@@ -2742,6 +2744,7 @@ static int __init acpi_ibm_init(void) | |||
2742 | proc_dir = proc_mkdir(IBM_DIR, acpi_root_dir); | 2744 | proc_dir = proc_mkdir(IBM_DIR, acpi_root_dir); |
2743 | if (!proc_dir) { | 2745 | if (!proc_dir) { |
2744 | printk(IBM_ERR "unable to create proc dir %s", IBM_DIR); | 2746 | printk(IBM_ERR "unable to create proc dir %s", IBM_DIR); |
2747 | acpi_ibm_exit(); | ||
2745 | return -ENODEV; | 2748 | return -ENODEV; |
2746 | } | 2749 | } |
2747 | proc_dir->owner = THIS_MODULE; | 2750 | proc_dir->owner = THIS_MODULE; |