From: Borislav Petkov <[email protected]>

... and simplify a bit.

No functionality change.

Signed-off-by: Borislav Petkov <[email protected]>
---
 arch/x86/kernel/cpu/mcheck/mce-inject.c | 30 ++++++++++++------------------
 1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/arch/x86/kernel/cpu/mcheck/mce-inject.c 
b/arch/x86/kernel/cpu/mcheck/mce-inject.c
index f1d8d3f9ec1d..675d2da3d31f 100644
--- a/arch/x86/kernel/cpu/mcheck/mce-inject.c
+++ b/arch/x86/kernel/cpu/mcheck/mce-inject.c
@@ -676,8 +676,8 @@ static struct dfs_node {
 
 static int __init debugfs_init(void)
 {
-       int i;
        u64 cap;
+       int i;
 
        rdmsrl(MSR_IA32_MCG_CAP, cap);
        n_banks = cap & MCG_BANKCNT_MASK;
@@ -700,28 +700,12 @@ static int __init debugfs_init(void)
        return 0;
 
 err_dfs_add:
-       while (--i >= 0)
-               debugfs_remove(dfs_fls[i].d);
-
-       debugfs_remove(dfs_inj);
+       debugfs_remove_recursive(dfs_inj);
        dfs_inj = NULL;
 
        return -ENOMEM;
 }
 
-static void __exit debugfs_exit(void)
-{
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(dfs_fls); i++)
-               debugfs_remove(dfs_fls[i].d);
-
-       memset(&dfs_fls, 0, sizeof(dfs_fls));
-
-       debugfs_remove(dfs_inj);
-       dfs_inj = NULL;
-}
-
 static int inject_init(void)
 {
        int err;
@@ -752,6 +736,16 @@ module_init(inject_init);
  * guarantee all openers of mce_chrdev will get a reference to us.
  */
 #ifndef CONFIG_X86_MCELOG
+static void __exit debugfs_exit(void)
+{
+       debugfs_remove_recursive(dfs_inj);
+       dfs_inj = NULL;
+
+       unregister_nmi_handler(NMI_LOCAL, "mce_notify");
+
+       free_cpumask_var(mce_inject_cpumask);
+}
+
 module_exit(debugfs_exit);
 #endif
 
-- 
2.7.3

Reply via email to