This is a note to let you know that I've just added the patch titled

    tracing: Use stack of calling function for stack tracer

to the 3.8-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     tracing-use-stack-of-calling-function-for-stack-tracer.patch
and it can be found in the queue-3.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From 87889501d0adfae10e3b0f0e6f2d7536eed9ae84 Mon Sep 17 00:00:00 2001
From: "Steven Rostedt (Red Hat)" <[email protected]>
Date: Wed, 13 Mar 2013 20:43:57 -0400
Subject: tracing: Use stack of calling function for stack tracer

From: "Steven Rostedt (Red Hat)" <[email protected]>

commit 87889501d0adfae10e3b0f0e6f2d7536eed9ae84 upstream.

Use the stack of stack_trace_call() instead of check_stack() as
the test pointer for max stack size. It makes it a bit cleaner
and a little more accurate.

Adding stable, as a later fix depends on this patch.

Signed-off-by: Steven Rostedt <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 kernel/trace/trace_stack.c |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

--- a/kernel/trace/trace_stack.c
+++ b/kernel/trace/trace_stack.c
@@ -39,20 +39,21 @@ static DEFINE_MUTEX(stack_sysctl_mutex);
 int stack_tracer_enabled;
 static int last_stack_tracer_enabled;
 
-static inline void check_stack(void)
+static inline void
+check_stack(unsigned long *stack)
 {
        unsigned long this_size, flags;
        unsigned long *p, *top, *start;
        int i;
 
-       this_size = ((unsigned long)&this_size) & (THREAD_SIZE-1);
+       this_size = ((unsigned long)stack) & (THREAD_SIZE-1);
        this_size = THREAD_SIZE - this_size;
 
        if (this_size <= max_stack_size)
                return;
 
        /* we do not handle interrupt stacks yet */
-       if (!object_is_on_stack(&this_size))
+       if (!object_is_on_stack(stack))
                return;
 
        local_irq_save(flags);
@@ -73,7 +74,7 @@ static inline void check_stack(void)
         * Now find where in the stack these are.
         */
        i = 0;
-       start = &this_size;
+       start = stack;
        top = (unsigned long *)
                (((unsigned long)start & ~(THREAD_SIZE-1)) + THREAD_SIZE);
 
@@ -113,6 +114,7 @@ static void
 stack_trace_call(unsigned long ip, unsigned long parent_ip,
                 struct ftrace_ops *op, struct pt_regs *pt_regs)
 {
+       unsigned long stack;
        int cpu;
 
        preempt_disable_notrace();
@@ -122,7 +124,7 @@ stack_trace_call(unsigned long ip, unsig
        if (per_cpu(trace_active, cpu)++ != 0)
                goto out;
 
-       check_stack();
+       check_stack(&stack);
 
  out:
        per_cpu(trace_active, cpu)--;


Patches currently in stable-queue which might be from [email protected] are

queue-3.8/tracing-fix-off-by-one-on-allocating-stat-pages.patch
queue-3.8/tracing-use-stack-of-calling-function-for-stack-tracer.patch
queue-3.8/tracing-fix-stack-tracer-with-fentry-use.patch
queue-3.8/tracing-remove-most-or-all-of-stack-tracer-stack-size-from-stack_max_size.patch
queue-3.8/tracing-reset-ftrace_graph_filter_enabled-if-count-is-zero.patch
queue-3.8/tracing-check-return-value-of-tracing_init_dentry.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to