From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752620AbcBAJAU (ORCPT ); Mon, 1 Feb 2016 04:00:20 -0500 Received: from e06smtp11.uk.ibm.com ([195.75.94.107]:46388 "EHLO e06smtp11.uk.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752054AbcBAJAS (ORCPT ); Mon, 1 Feb 2016 04:00:18 -0500 X-IBM-Helo: d06dlp03.portsmouth.uk.ibm.com X-IBM-MailFrom: heiko.carstens@de.ibm.com X-IBM-RcptTo: linux-kernel@vger.kernel.org;linux-s390@vger.kernel.org Date: Mon, 1 Feb 2016 10:00:11 +0100 From: Heiko Carstens To: Pratyush Anand Cc: schwidefsky@de.ibm.com, rostedt@goodmis.org, linux-s390@vger.kernel.org, Chunyu Hu , open list Subject: Re: [PATCH] s390:ftrace: add save_stack_trace_regs() Message-ID: <20160201090011.GA4166@osiris> References: <86d380d172bba0416aef64448b0e1b6a50fad326.1454044645.git.panand@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <86d380d172bba0416aef64448b0e1b6a50fad326.1454044645.git.panand@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16020109-0041-0000-0000-00000758C9DF Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jan 29, 2016 at 10:50:28AM +0530, Pratyush Anand wrote: > Implement save_stack_trace_regs, so that stacktrace of a kprobe events can > be obtained. > > Without this we see following warning: > "save_stack_trace_regs() not implemented yet." > when we execute: > echo stacktrace > /sys/kernel/debug/tracing/trace_options > echo "p kfree" >> /sys/kernel/debug/tracing/kprobe_events > echo 1 > /sys/kernel/debug/tracing/events/kprobes/enable > > Reported-by: Chunyu Hu > Signed-off-by: Pratyush Anand > --- > arch/s390/kernel/stacktrace.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/arch/s390/kernel/stacktrace.c b/arch/s390/kernel/stacktrace.c > index 1785cd82253c..586da400f931 100644 > --- a/arch/s390/kernel/stacktrace.c > +++ b/arch/s390/kernel/stacktrace.c > @@ -94,3 +94,16 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) > trace->entries[trace->nr_entries++] = ULONG_MAX; > } > EXPORT_SYMBOL_GPL(save_stack_trace_tsk); > + > +void save_stack_trace_regs(struct pt_regs *regs, struct stack_trace *trace) > +{ > + unsigned long sp, low, high; > + > + sp = kernel_stack_pointer(regs); > + low = (unsigned long) task_stack_page(current); > + high = (unsigned long) task_pt_regs(current); > + save_context_stack(trace, sp, low, high, 0); > + if (trace->nr_entries < trace->max_entries) > + trace->entries[trace->nr_entries++] = ULONG_MAX; > +} > +EXPORT_SYMBOL_GPL(save_stack_trace_regs); While playing around with this, I discovered a couple of bugs in our stacktrace code. However this patch is also not correct, since it will save a stacktrace only if being called in process context, but not for interrupt context. I will fix this within this patch.