From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932412AbdJJPAr (ORCPT ); Tue, 10 Oct 2017 11:00:47 -0400 Received: from terminus.zytor.com ([65.50.211.136]:58953 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932366AbdJJPAo (ORCPT ); Tue, 10 Oct 2017 11:00:44 -0400 Date: Tue, 10 Oct 2017 07:55:57 -0700 From: tip-bot for Josh Poimboeuf Message-ID: Cc: fengguang.wu@intel.com, tglx@linutronix.de, lkp@01.org, penguin-kernel@I-love.SAKURA.ne.jp, jpoimboe@redhat.com, peterz@infradead.org, mingo@kernel.org, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, byungchul.park@lge.com, hpa@zytor.com Reply-To: torvalds@linux-foundation.org, hpa@zytor.com, byungchul.park@lge.com, peterz@infradead.org, fengguang.wu@intel.com, tglx@linutronix.de, jpoimboe@redhat.com, lkp@01.org, penguin-kernel@I-love.SAKURA.ne.jp, linux-kernel@vger.kernel.org, mingo@kernel.org In-Reply-To: <2f540c515946ab09ed267e1a1d6421202a0cce08.1507597785.git.jpoimboe@redhat.com> References: <2f540c515946ab09ed267e1a1d6421202a0cce08.1507597785.git.jpoimboe@redhat.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/urgent] x86/unwind: Align stack pointer in unwinder dump Git-Commit-ID: 99bd28a49b150e4b938313a63b5532d95ba77885 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 99bd28a49b150e4b938313a63b5532d95ba77885 Gitweb: https://git.kernel.org/tip/99bd28a49b150e4b938313a63b5532d95ba77885 Author: Josh Poimboeuf AuthorDate: Mon, 9 Oct 2017 20:20:04 -0500 Committer: Ingo Molnar CommitDate: Tue, 10 Oct 2017 12:49:49 +0200 x86/unwind: Align stack pointer in unwinder dump When printing the unwinder dump, the stack pointer could be unaligned, for one of two reasons: - stack corruption; or - GCC created an unaligned stack. There's no way for the unwinder to tell the difference between the two, so we have to assume one or the other. GCC unaligned stacks are very rare, and have only been spotted before GCC 5. Presumably, if we're doing an unwinder stack dump, stack corruption is more likely than a GCC unaligned stack. So always align the stack before starting the dump. Reported-and-tested-by: Tetsuo Handa Reported-and-tested-by: Fengguang Wu Signed-off-by: Josh Poimboeuf Cc: Byungchul Park Cc: LKP Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Thomas Gleixner Link: http://lkml.kernel.org/r/2f540c515946ab09ed267e1a1d6421202a0cce08.1507597785.git.jpoimboe@redhat.com Signed-off-by: Ingo Molnar --- arch/x86/kernel/unwind_frame.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/unwind_frame.c b/arch/x86/kernel/unwind_frame.c index 4949bbc..81aca07 100644 --- a/arch/x86/kernel/unwind_frame.c +++ b/arch/x86/kernel/unwind_frame.c @@ -44,7 +44,8 @@ static void unwind_dump(struct unwind_state *state) state->stack_info.type, state->stack_info.next_sp, state->stack_mask, state->graph_idx); - for (sp = state->orig_sp; sp; sp = PTR_ALIGN(stack_info.next_sp, sizeof(long))) { + for (sp = PTR_ALIGN(state->orig_sp, sizeof(long)); sp; + sp = PTR_ALIGN(stack_info.next_sp, sizeof(long))) { if (get_stack_info(sp, state->task, &stack_info, &visit_mask)) break;