aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/dynamic_debug.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index 44ce66bdb211..a687d902daab 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -748,13 +748,14 @@ static void ddebug_remove_all_tables(void)
748 mutex_unlock(&ddebug_lock); 748 mutex_unlock(&ddebug_lock);
749} 749}
750 750
751static int __init dynamic_debug_init(void) 751static __initdata int ddebug_init_success;
752
753static int __init dynamic_debug_init_debugfs(void)
752{ 754{
753 struct dentry *dir, *file; 755 struct dentry *dir, *file;
754 struct _ddebug *iter, *iter_start; 756
755 const char *modname = NULL; 757 if (!ddebug_init_success)
756 int ret = 0; 758 return -ENODEV;
757 int n = 0;
758 759
759 dir = debugfs_create_dir("dynamic_debug", NULL); 760 dir = debugfs_create_dir("dynamic_debug", NULL);
760 if (!dir) 761 if (!dir)
@@ -765,6 +766,16 @@ static int __init dynamic_debug_init(void)
765 debugfs_remove(dir); 766 debugfs_remove(dir);
766 return -ENOMEM; 767 return -ENOMEM;
767 } 768 }
769 return 0;
770}
771
772static int __init dynamic_debug_init(void)
773{
774 struct _ddebug *iter, *iter_start;
775 const char *modname = NULL;
776 int ret = 0;
777 int n = 0;
778
768 if (__start___verbose != __stop___verbose) { 779 if (__start___verbose != __stop___verbose) {
769 iter = __start___verbose; 780 iter = __start___verbose;
770 modname = iter->modname; 781 modname = iter->modname;
@@ -795,11 +806,13 @@ static int __init dynamic_debug_init(void)
795 } 806 }
796 807
797out_free: 808out_free:
798 if (ret) { 809 if (ret)
799 ddebug_remove_all_tables(); 810 ddebug_remove_all_tables();
800 debugfs_remove(dir); 811 else
801 debugfs_remove(file); 812 ddebug_init_success = 1;
802 }
803 return 0; 813 return 0;
804} 814}
805module_init(dynamic_debug_init); 815/* Allow early initialization for boot messages via boot param */
816arch_initcall(dynamic_debug_init);
817/* Debugfs setup must be done later */
818module_init(dynamic_debug_init_debugfs);