Commit-ID:  9f50c91b1195dfffd183d5d8505e45af86623532
Gitweb:     https://git.kernel.org/tip/9f50c91b1195dfffd183d5d8505e45af86623532
Author:     Thomas Gleixner <[email protected]>
AuthorDate: Thu, 25 Apr 2019 11:45:17 +0200
Committer:  Thomas Gleixner <[email protected]>
CommitDate: Mon, 29 Apr 2019 12:37:56 +0200

tracing: Remove the last struct stack_trace usage

Simplify the stack retrieval code by using the storage array based
interface.

Signed-off-by: Thomas Gleixner <[email protected]>
Reviewed-by: Steven Rostedt (VMware) <[email protected]>
Reviewed-by: Josh Poimboeuf <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Alexander Potapenko <[email protected]>
Cc: Alexey Dobriyan <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Christoph Lameter <[email protected]>
Cc: Pekka Enberg <[email protected]>
Cc: [email protected]
Cc: David Rientjes <[email protected]>
Cc: Catalin Marinas <[email protected]>
Cc: Dmitry Vyukov <[email protected]>
Cc: Andrey Ryabinin <[email protected]>
Cc: [email protected]
Cc: Mike Rapoport <[email protected]>
Cc: Akinobu Mita <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: [email protected]
Cc: Robin Murphy <[email protected]>
Cc: Marek Szyprowski <[email protected]>
Cc: Johannes Thumshirn <[email protected]>
Cc: David Sterba <[email protected]>
Cc: Chris Mason <[email protected]>
Cc: Josef Bacik <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: Mike Snitzer <[email protected]>
Cc: Alasdair Kergon <[email protected]>
Cc: Daniel Vetter <[email protected]>
Cc: [email protected]
Cc: Joonas Lahtinen <[email protected]>
Cc: Maarten Lankhorst <[email protected]>
Cc: [email protected]
Cc: David Airlie <[email protected]>
Cc: Jani Nikula <[email protected]>
Cc: Rodrigo Vivi <[email protected]>
Cc: Tom Zanussi <[email protected]>
Cc: Miroslav Benes <[email protected]>
Cc: [email protected]
Link: https://lkml.kernel.org/r/[email protected]

---
 kernel/trace/trace_stack.c | 37 ++++++++++++++++---------------------
 1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
index 4efda5f75a0f..5d16f73898db 100644
--- a/kernel/trace/trace_stack.c
+++ b/kernel/trace/trace_stack.c
@@ -23,11 +23,7 @@
 static unsigned long stack_dump_trace[STACK_TRACE_ENTRIES];
 static unsigned stack_trace_index[STACK_TRACE_ENTRIES];
 
-struct stack_trace stack_trace_max = {
-       .max_entries            = STACK_TRACE_ENTRIES,
-       .entries                = &stack_dump_trace[0],
-};
-
+static unsigned int stack_trace_nr_entries;
 static unsigned long stack_trace_max_size;
 static arch_spinlock_t stack_trace_max_lock =
        (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
@@ -44,10 +40,10 @@ static void print_max_stack(void)
 
        pr_emerg("        Depth    Size   Location    (%d entries)\n"
                           "        -----    ----   --------\n",
-                          stack_trace_max.nr_entries);
+                          stack_trace_nr_entries);
 
-       for (i = 0; i < stack_trace_max.nr_entries; i++) {
-               if (i + 1 == stack_trace_max.nr_entries)
+       for (i = 0; i < stack_trace_nr_entries; i++) {
+               if (i + 1 == stack_trace_nr_entries)
                        size = stack_trace_index[i];
                else
                        size = stack_trace_index[i] - stack_trace_index[i+1];
@@ -93,13 +89,12 @@ static void check_stack(unsigned long ip, unsigned long 
*stack)
 
        stack_trace_max_size = this_size;
 
-       stack_trace_max.nr_entries = 0;
-       stack_trace_max.skip = 0;
-
-       save_stack_trace(&stack_trace_max);
+       stack_trace_nr_entries = stack_trace_save(stack_dump_trace,
+                                              ARRAY_SIZE(stack_dump_trace) - 1,
+                                              0);
 
        /* Skip over the overhead of the stack tracer itself */
-       for (i = 0; i < stack_trace_max.nr_entries; i++) {
+       for (i = 0; i < stack_trace_nr_entries; i++) {
                if (stack_dump_trace[i] == ip)
                        break;
        }
@@ -108,7 +103,7 @@ static void check_stack(unsigned long ip, unsigned long 
*stack)
         * Some archs may not have the passed in ip in the dump.
         * If that happens, we need to show everything.
         */
-       if (i == stack_trace_max.nr_entries)
+       if (i == stack_trace_nr_entries)
                i = 0;
 
        /*
@@ -126,13 +121,13 @@ static void check_stack(unsigned long ip, unsigned long 
*stack)
         * loop will only happen once. This code only takes place
         * on a new max, so it is far from a fast path.
         */
-       while (i < stack_trace_max.nr_entries) {
+       while (i < stack_trace_nr_entries) {
                int found = 0;
 
                stack_trace_index[x] = this_size;
                p = start;
 
-               for (; p < top && i < stack_trace_max.nr_entries; p++) {
+               for (; p < top && i < stack_trace_nr_entries; p++) {
                        /*
                         * The READ_ONCE_NOCHECK is used to let KASAN know that
                         * this is not a stack-out-of-bounds error.
@@ -163,7 +158,7 @@ static void check_stack(unsigned long ip, unsigned long 
*stack)
                        i++;
        }
 
-       stack_trace_max.nr_entries = x;
+       stack_trace_nr_entries = x;
 
        if (task_stack_end_corrupted(current)) {
                print_max_stack();
@@ -265,7 +260,7 @@ __next(struct seq_file *m, loff_t *pos)
 {
        long n = *pos - 1;
 
-       if (n >= stack_trace_max.nr_entries)
+       if (n >= stack_trace_nr_entries)
                return NULL;
 
        m->private = (void *)n;
@@ -329,7 +324,7 @@ static int t_show(struct seq_file *m, void *v)
                seq_printf(m, "        Depth    Size   Location"
                           "    (%d entries)\n"
                           "        -----    ----   --------\n",
-                          stack_trace_max.nr_entries);
+                          stack_trace_nr_entries);
 
                if (!stack_tracer_enabled && !stack_trace_max_size)
                        print_disabled(m);
@@ -339,10 +334,10 @@ static int t_show(struct seq_file *m, void *v)
 
        i = *(long *)v;
 
-       if (i >= stack_trace_max.nr_entries)
+       if (i >= stack_trace_nr_entries)
                return 0;
 
-       if (i + 1 == stack_trace_max.nr_entries)
+       if (i + 1 == stack_trace_nr_entries)
                size = stack_trace_index[i];
        else
                size = stack_trace_index[i] - stack_trace_index[i+1];

Reply via email to