From d45241e45731e040f6bde08cea8b5af4f4aa5d7f Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Fri, 12 Mar 2010 20:03:30 -0500 Subject: [PATCH] --- yaml --- r: 187873 b: refs/heads/master c: b6345879ccbd9b92864fbd7eb8ac48acdb4d6b15 h: refs/heads/master i: 187871: f5ebde96ef37c22fa93cd4a0ffbb8c4d3a20b38a v: v3 --- [refs] | 2 +- trunk/kernel/trace/trace.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 6d09d53da424..e289f8bea873 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a2f8071428ed9a0f06865f417c962421c9a6b488 +refs/heads/master: b6345879ccbd9b92864fbd7eb8ac48acdb4d6b15 diff --git a/trunk/kernel/trace/trace.c b/trunk/kernel/trace/trace.c index 484337d33959..e52683f7c3b2 100644 --- a/trunk/kernel/trace/trace.c +++ b/trunk/kernel/trace/trace.c @@ -1284,6 +1284,13 @@ ftrace_trace_userstack(struct ring_buffer *buffer, unsigned long flags, int pc) if (!(trace_flags & TRACE_ITER_USERSTACKTRACE)) return; + /* + * NMIs can not handle page faults, even with fix ups. + * The save user stack can (and often does) fault. + */ + if (unlikely(in_nmi())) + return; + event = trace_buffer_lock_reserve(buffer, TRACE_USER_STACK, sizeof(*entry), flags, pc); if (!event)