From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758754AbdELSg0 (ORCPT ); Fri, 12 May 2017 14:36:26 -0400 Received: from mail.kernel.org ([198.145.29.99]:41532 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758730AbdELSgX (ORCPT ); Fri, 12 May 2017 14:36:23 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 67C6623992 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=goodmis.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=rostedt@goodmis.org Date: Fri, 12 May 2017 14:36:19 -0400 From: Steven Rostedt To: "Paul E. McKenney" Cc: linux-kernel@vger.kernel.org, Thomas Gleixner , Peter Zijlstra , Ingo Molnar , Mathieu Desnoyers , Masami Hiramatsu Subject: Re: [RFC][PATCH 1/5] tracing: Make sure RCU is watching before calling a stack trace Message-ID: <20170512143619.281db952@gandalf.local.home> In-Reply-To: <20170512182535.GZ3956@linux.vnet.ibm.com> References: <20170512171544.100715273@goodmis.org> <20170512172449.879684501@goodmis.org> <20170512182535.GZ3956@linux.vnet.ibm.com> X-Mailer: Claws Mail 3.14.0 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 12 May 2017 11:25:35 -0700 "Paul E. McKenney" wrote: > On Fri, May 12, 2017 at 01:15:45PM -0400, Steven Rostedt wrote: > > From: "Steven Rostedt (VMware)" > > > > As stack tracing now requires "rcu watching", force RCU to be watching when > > recording a stack trace. > > > > Signed-off-by: Steven Rostedt (VMware) > > Assuming that you never get to __trace_stack() if in an NMI handler, > this looks good to me! > > In contrast, if if __trace_stack() ever is called from an NMI handler, > invoking rcu_irq_enter() can be fatal. Then someone may die. OK, what's the case of running this in nmi? How does perf do it? Do we just skip the check if it is in an nmi? if (!in_nmi()) { if (unlikely(rcu_irq_enter_disabled())) return; rcu_irq_enter(); } __ftrace_trace_stack(); if (!in_nmi()) rcu_irq_exit(); ? -- Steve