From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 87FECC433F5 for ; Thu, 10 Mar 2022 17:07:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=MV1U7q4OcMOMbeO7P3l7T4uiTEb0LoDdUO88t95Kh48=; b=mbEJBvcrlRYbTo k8t96pV+JukFEqiK4JSr+itXyyZKLf+//Bj3kEtfp8cCUnIAcSmmA6GqEzb+NwKBsF/T0KBGy4fz+ bV52sIiPO6X7y1cTOhtipIxTCbiJmgQ4rXyOcI3ZYeGjRDpHCqlD9cqJEwJ8EV+urFCFfyV7Bvjuw eG8DJYU6Zgpoe330L+jiqejnYenTHYrY7Kk6voUP4m9mkm4lH11eSFJ2oAat7U6vLd4nAEGKSK5Mc 981aiBWocCxx/LFjVKHtda2gutY1zm/VVGt/juIcHzHYHPZ7o0qNpjRn5HXiIvLu/460nhmISc9O3 LQdYvDMfefteUdW94UBw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nSMEN-00DZsg-FF; Thu, 10 Mar 2022 17:05:39 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nSMEH-00DZsC-Sa for linux-arm-kernel@lists.infradead.org; Thu, 10 Mar 2022 17:05:35 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 77BEE618EE; Thu, 10 Mar 2022 17:05:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA769C340E8; Thu, 10 Mar 2022 17:05:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1646931932; bh=tnaWMMB260xKk81dHj6m64uS/IS109Y1iUUrqLT3suQ=; h=From:To:Cc:Subject:Date:From; b=P8M9L53iUWHKpsX2xtshse6KB7cjwWERtCbQyZAwWelUVvpjDApy5Ngs4OHT4hzc5 33vKFC53sBWFCRc60+SBLHh2CzTCb0dZqsXiQMMUBQkvY0rEBj5TjkBh8GqjZoNNfx HQHYbnJQS5foxSTZOLuQM+GvV0t+9Ugi+gHgu8wpr/wpOYVynzOkDzlCXJIf5BZHFR ayZHE50JhrQq5k9OiOZrxXN1QomwtlEPNKC9LYtmWWtah1V17H6E7Vrr8YylQWZr9e Ywn7rJ5RFMQ4ivClvOFxZziv4Rh+N89nbmOfllU6hxTCz0ZoeLR8zYFX7KY5L2BwFD lnS1qcAt3ZulQ== From: Ard Biesheuvel To: linux@armlinux.org.uk Cc: naresh.kamboju@linaro.org, linux-arm-kernel@lists.infradead.org, Ard Biesheuvel Subject: [PATCH] ARM: Revert "unwind: dump exception stack from calling frame" Date: Thu, 10 Mar 2022 18:05:28 +0100 Message-Id: <20220310170528.3146323-1-ardb@kernel.org> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3276; h=from:subject; bh=tnaWMMB260xKk81dHj6m64uS/IS109Y1iUUrqLT3suQ=; b=owEB7QES/pANAwAKAcNPIjmS2Y8kAcsmYgBiKi/XntAj+YoFNeRXOeAsxKlSnyqjxb5oYyur9vTt HHJgTe6JAbMEAAEKAB0WIQT72WJ8QGnJQhU3VynDTyI5ktmPJAUCYiov1wAKCRDDTyI5ktmPJFl5DA Cwpn8FcG5iu27e6qYDyK9lD6G9iSfCFmJ9/tv0Nd5mTNqdSkaFl2LhHZ54aF9qzQHDiennL3o51oFj TIuex3LkSNjVJjfo9ZNSjnapNAP0FMftq+tbWJdtmoNkZQ6WVSHAJrgGjcXv6zH1ViPXNhijmCIeDn bPAzD3OcM4tWpkvFyUUafcG7Mv8GnpM9uz9G+MFtnFoTBR/6I+O5oVrGR/r2c/UlKITbmNj1wan27L XYDQjuCJNGjbLN/HlSOLb70qDDQBXjLgfwLLixoflv48oZCgbjGr6t1l5j5iPuNAxUBEM8+AgoFt9M 12rDSyrUk4PBNEoWL9EA8GSwjd/y/YVe392tMOKDn/l5A25BjeusXQUJw3ytfVrzgk/fuEDKzLS7Si PbQtsn9ObwVbeWwa49m30aRJ++8x2w/ftdXeWILZOu+Hx9LzPpc1aetU9lc0o4LfuoLiFJYqC+zuYg yR1sbHpUGfpul2nZmLIgXruHCNlZy7ZuI4AAa2CrDn21c= X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220310_090534_027605_2EEA531E X-CRM114-Status: GOOD ( 19.44 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org After simplifying the stack switch code in the IRQ exception handler by deferring the actual stack switch to call_with_stack(), we no longer need to special case the way we dump the exception stack, since it will always be at the top of whichever stack was active when the exception was taken. So revert this special handling for the ARM unwinder. This reverts commit 4ab6827081c63b83011a18d8e27f621ed34b1194. Signed-off-by: Ard Biesheuvel --- arch/arm/include/asm/stacktrace.h | 10 ---------- arch/arm/kernel/traps.c | 3 +-- arch/arm/kernel/unwind.c | 9 +-------- 3 files changed, 2 insertions(+), 20 deletions(-) diff --git a/arch/arm/include/asm/stacktrace.h b/arch/arm/include/asm/stacktrace.h index e56503fd9447..3e78f921b8b2 100644 --- a/arch/arm/include/asm/stacktrace.h +++ b/arch/arm/include/asm/stacktrace.h @@ -21,16 +21,6 @@ struct stackframe { struct llist_node *kr_cur; struct task_struct *tsk; #endif -#ifdef CONFIG_ARM_UNWIND - /* - * This field is used to track the stack pointer value when calling - * __entry routines. This is needed when IRQ stacks and overflow stacks - * are used, because in that case, the struct pt_regs passed to these - * __entry routines may be at the top of the task stack, while we are - * executing from another stack. - */ - unsigned long sp_low; -#endif }; static __always_inline diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 8153282dadce..4f661aa3809c 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c @@ -89,8 +89,7 @@ void dump_backtrace_entry(unsigned long where, unsigned long from, printk("%s %ps from %pS\n", loglvl, (void *)where, (void *)from); #endif - if (!IS_ENABLED(CONFIG_UNWINDER_ARM) && - in_entry_text(from) && end <= ALIGN(frame, THREAD_SIZE)) + if (in_entry_text(from) && end <= ALIGN(frame, THREAD_SIZE)) dump_mem(loglvl, "Exception stack", frame + 4, end); } diff --git a/arch/arm/kernel/unwind.c b/arch/arm/kernel/unwind.c index 3cd8892ed52b..e619ec7856b7 100644 --- a/arch/arm/kernel/unwind.c +++ b/arch/arm/kernel/unwind.c @@ -29,7 +29,6 @@ #include #include -#include #include #include #include @@ -424,7 +423,6 @@ int unwind_frame(struct stackframe *frame) */ if (frame->pc == frame->lr) return -URC_FAILURE; - frame->sp_low = frame->sp; frame->pc = frame->lr; return URC_OK; } else if ((idx->insn & 0x80000000) == 0) @@ -476,7 +474,6 @@ int unwind_frame(struct stackframe *frame) frame->sp = ctrl.vrs[SP]; frame->lr = ctrl.vrs[LR]; frame->pc = ctrl.vrs[PC]; - frame->sp_low = ctrl.sp_low; frame->lr_addr = ctrl.lr_addr; return URC_OK; @@ -526,11 +523,7 @@ void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk, urc = unwind_frame(&frame); if (urc < 0) break; - if (in_entry_text(where)) - dump_mem(loglvl, "Exception stack", frame.sp_low, - frame.sp_low + sizeof(struct pt_regs)); - - dump_backtrace_entry(where, frame.pc, 0, loglvl); + dump_backtrace_entry(where, frame.pc, frame.sp - 4, loglvl); } } -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel