hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/lib/dump_stack.c
....@@ -12,6 +12,7 @@
1212 #include <linux/atomic.h>
1313 #include <linux/kexec.h>
1414 #include <linux/utsname.h>
15
+#include <linux/stop_machine.h>
1516
1617 static char dump_stack_arch_desc_str[128];
1718
....@@ -57,6 +58,7 @@
5758 log_lvl, dump_stack_arch_desc_str);
5859
5960 print_worker_info(log_lvl, current);
61
+ print_stop_info(log_lvl, current);
6062 }
6163
6264 /**
....@@ -71,10 +73,10 @@
7173 dump_stack_print_info(log_lvl);
7274 }
7375
74
-static void __dump_stack(void)
76
+static void __dump_stack(const char *log_lvl)
7577 {
76
- dump_stack_print_info(KERN_DEFAULT);
77
- show_stack(NULL, NULL);
78
+ dump_stack_print_info(log_lvl);
79
+ show_stack(NULL, NULL, log_lvl);
7880 }
7981
8082 /**
....@@ -85,7 +87,7 @@
8587 #ifdef CONFIG_SMP
8688 static atomic_t dump_lock = ATOMIC_INIT(-1);
8789
88
-asmlinkage __visible void dump_stack(void)
90
+asmlinkage __visible void dump_stack_lvl(const char *log_lvl)
8991 {
9092 unsigned long flags;
9193 int was_locked;
....@@ -115,7 +117,7 @@
115117 goto retry;
116118 }
117119
118
- __dump_stack();
120
+ __dump_stack(log_lvl);
119121
120122 if (!was_locked)
121123 atomic_set(&dump_lock, -1);
....@@ -123,9 +125,15 @@
123125 local_irq_restore(flags);
124126 }
125127 #else
126
-asmlinkage __visible void dump_stack(void)
128
+asmlinkage __visible void dump_stack_lvl(const char *log_lvl)
127129 {
128
- __dump_stack();
130
+ __dump_stack(log_lvl);
129131 }
130132 #endif
133
+EXPORT_SYMBOL(dump_stack_lvl);
134
+
135
+asmlinkage __visible void dump_stack(void)
136
+{
137
+ dump_stack_lvl(KERN_DEFAULT);
138
+}
131139 EXPORT_SYMBOL(dump_stack);