Skip to content

Commit 13e57da

Browse files
committed
Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 debug update from Ingo Molnar: "A single change enhancing stack traces by hiding wrapper function entries" * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/stacktrace: Avoid recording save_stack_trace() wrappers
2 parents eb4d47c + 77072f0 commit 13e57da

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

arch/x86/kernel/stacktrace.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ static int save_stack_address(struct stack_trace *trace, unsigned long addr,
3030
return 0;
3131
}
3232

33-
static void __save_stack_trace(struct stack_trace *trace,
33+
static void noinline __save_stack_trace(struct stack_trace *trace,
3434
struct task_struct *task, struct pt_regs *regs,
3535
bool nosched)
3636
{
@@ -56,6 +56,7 @@ static void __save_stack_trace(struct stack_trace *trace,
5656
*/
5757
void save_stack_trace(struct stack_trace *trace)
5858
{
59+
trace->skip++;
5960
__save_stack_trace(trace, current, NULL, false);
6061
}
6162
EXPORT_SYMBOL_GPL(save_stack_trace);
@@ -70,6 +71,8 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
7071
if (!try_get_task_stack(tsk))
7172
return;
7273

74+
if (tsk == current)
75+
trace->skip++;
7376
__save_stack_trace(trace, tsk, NULL, true);
7477

7578
put_task_stack(tsk);
@@ -88,8 +91,9 @@ EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
8891
} \
8992
})
9093

91-
static int __save_stack_trace_reliable(struct stack_trace *trace,
92-
struct task_struct *task)
94+
static int __always_inline
95+
__save_stack_trace_reliable(struct stack_trace *trace,
96+
struct task_struct *task)
9397
{
9498
struct unwind_state state;
9599
struct pt_regs *regs;

0 commit comments

Comments
 (0)