diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/dynamic_debug.c | 33 |
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 | ||
751 | static int __init dynamic_debug_init(void) | 751 | static __initdata int ddebug_init_success; |
752 | |||
753 | static 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 | |||
772 | static 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 | ||
797 | out_free: | 808 | out_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 | } |
805 | module_init(dynamic_debug_init); | 815 | /* Allow early initialization for boot messages via boot param */ |
816 | arch_initcall(dynamic_debug_init); | ||
817 | /* Debugfs setup must be done later */ | ||
818 | module_init(dynamic_debug_init_debugfs); | ||