[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1299263516-18858-1-git-send-email-johan.wessfeldt@gmail.com>
Date: Fri, 4 Mar 2011 19:31:56 +0100
From: Johan Wessfeldt <johan.wessfeldt@...il.com>
To: tglx@...utronix.de
Cc: x86@...nel.org, linux-kernel@...r.kernel.org,
Johan Wessfeldt <johan.wessfeldt@...il.com>
Subject: [PATCH] x86: mce: Potential memory leaks when initializing mcheck devices
This patch makes sure cleanup is done properly when mcheck fails
initializing any of its resources.
Note!
It should be safe to call mce_remove_device on ANY of the cpus as
mce_remove_device checks if corresponding cpu was initialized
before removing its resources.
Please review.
Signed-off-by: Johan Wessfeldt <johan.wessfeldt@...il.com>
---
arch/x86/kernel/cpu/mcheck/mce.c | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index d916183..273f2f6 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -2136,15 +2136,26 @@ static __init int mcheck_init_device(void)
for_each_online_cpu(i) {
err = mce_create_device(i);
if (err)
- return err;
+ goto out_unreg;
}
register_hotcpu_notifier(&mce_cpu_notifier);
- misc_register(&mce_log_device);
+ err = misc_register(&mce_log_device);
+ if (err)
+ goto out_unreg_hotcpu;
+
+ return 0;
+
+out_unreg_hotcpu:
+ unregister_hotcpu_notifier(&mce_cpu_notifier);
+out_unreg:
+ for_each_online_cpu(i)
+ mce_remove_device(i);
+ sysdev_class_unregister(&mce_sysclass);
+ free_cpumask_var(mce_dev_initialized);
return err;
}
-
device_initcall(mcheck_init_device);
/*
--
1.7.2.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists