hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/arch/um/kernel/sysrq.c
....@@ -1,10 +1,7 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
34 * Copyright (C) 2013 Richard Weinberger <richrd@nod.at>
4
- *
5
- * This program is free software; you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License version 2 as
7
- * published by the Free Software Foundation.
85 */
96
107 #include <linux/kallsyms.h>
....@@ -20,7 +17,9 @@
2017
2118 static void _print_addr(void *data, unsigned long address, int reliable)
2219 {
23
- pr_info(" [<%08lx>] %s%pF\n", address, reliable ? "" : "? ",
20
+ const char *loglvl = data;
21
+
22
+ printk("%s [<%08lx>] %s%pS\n", loglvl, address, reliable ? "" : "? ",
2423 (void *)address);
2524 }
2625
....@@ -28,9 +27,9 @@
2827 .address = _print_addr
2928 };
3029
31
-void show_stack(struct task_struct *task, unsigned long *stack)
30
+void show_stack(struct task_struct *task, unsigned long *stack,
31
+ const char *loglvl)
3232 {
33
- unsigned long *sp = stack;
3433 struct pt_regs *segv_regs = current->thread.segv_regs;
3534 int i;
3635
....@@ -41,10 +40,9 @@
4140 }
4241
4342 if (!stack)
44
- sp = get_stack_pointer(task, segv_regs);
43
+ stack = get_stack_pointer(task, segv_regs);
4544
46
- pr_info("Stack:\n");
47
- stack = sp;
45
+ printk("%sStack:\n", loglvl);
4846 for (i = 0; i < 3 * STACKSLOTS_PER_LINE; i++) {
4947 if (kstack_end(stack))
5048 break;
....@@ -52,9 +50,7 @@
5250 pr_cont("\n");
5351 pr_cont(" %08lx", *stack++);
5452 }
55
- pr_cont("\n");
5653
57
- pr_info("Call Trace:\n");
58
- dump_trace(current, &stackops, NULL);
59
- pr_info("\n");
54
+ printk("%sCall Trace:\n", loglvl);
55
+ dump_trace(current, &stackops, (void *)loglvl);
6056 }