From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754228AbcHAQsB (ORCPT ); Mon, 1 Aug 2016 12:48:01 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39422 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754028AbcHAQrw (ORCPT ); Mon, 1 Aug 2016 12:47:52 -0400 Date: Mon, 1 Aug 2016 10:59:03 -0500 From: Josh Poimboeuf To: Steven Rostedt Cc: Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , x86@kernel.org, linux-kernel@vger.kernel.org, Andy Lutomirski , Linus Torvalds , Brian Gerst , Kees Cook , Peter Zijlstra , Frederic Weisbecker , Byungchul Park Subject: Re: [PATCH 05/19] x86/dumpstack: fix function graph tracing stack dump reliability issues Message-ID: <20160801155903.wuclx6oys6v4sa66@treble> References: <20160729185521.62a5cd2a@gandalf.local.home> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20160729185521.62a5cd2a@gandalf.local.home> User-Agent: Mutt/1.6.0.1 (2016-04-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 01 Aug 2016 15:59:06 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jul 29, 2016 at 06:55:21PM -0400, Steven Rostedt wrote: > Here's my patch that should be applied on top. > > Maybe add a Signed-off-by: Steven Rostedt along > with your SOB. But you should remain Author. [...] > @@ -123,13 +124,16 @@ print_context_stack_bp(struct task_struc > > while (valid_stack_ptr(task, ret_addr, sizeof(*ret_addr), end)) { > unsigned long addr = *ret_addr; > + unsigned long real_addr; > > if (!__kernel_text_address(addr)) > break; > > - addr = ftrace_graph_ret_addr(task, graph, addr); > - if (ops->address(data, addr, 1)) > + real_addr = ftrace_graph_ret_addr(task, graph, addr); > + if (ops->address(data, real_addr, 1)) > break; > + if (real_addr != addr) > + ops->address(data, addr, 0); > frame = frame->next_frame; > ret_addr = &frame->return_address; > } Actually this hunk isn't needed because all users of print_context_stack_bp() only care about "reliable" addresses. With frame pointers enabled, the only place "unreliable" addresses are used is in show_trace_log_lvl() -- and it uses the print_context_stack() callback. I rely on that fact in the new frame pointer unwind code: it only reports reliable addresses. -- Josh