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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D0AC7C433EF for ; Fri, 8 Oct 2021 12:37:20 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 9840460F9D for ; Fri, 8 Oct 2021 12:37:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 9840460F9D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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:References:In-Reply-To: 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: List-Owner; bh=Vq0KZEkEdVOB+Qa+F1znPEJIGFH1Wg7nReK/h0e1gEg=; b=ds3TNZQbK8tqT0 oifUjXLUV7Lu/gvr29y3uVFtpEDqdc5qFUp0Qlnwk5+5jlDTYoPQby1fry2FC19Vi762Q9hN6LmoI t6x3sLueC0Xtp6Bc5oPGpMsZyEyB0eC2gXCA74jtu5IuSWXIgVGO7YwB48SC+6oqZzCaoty6NNPFF VqCfAWSaPRe0fd2oEfMRIu0alnNzl+gt2FpYWTo4+VX1qj+HMxTqLbVLSHgXp0KcEKJj+WAqhYHzA QLs1wR64zadgJYzUOJJTY8kPU5kN2Oqen3p19cSMZGWBfbbbWBsH0g/E28tEpNhhTP9REsg2ezsEx 5WRTqIGvDaMGJDuxwAIw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mYp5q-002kIl-5I; Fri, 08 Oct 2021 12:35:19 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mYozw-002iDF-8w for linux-arm-kernel@lists.infradead.org; Fri, 08 Oct 2021 12:29:13 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id CE29E60F93; Fri, 8 Oct 2021 12:29:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1633696151; bh=QKDaU+Bp0qe2hOMqt+T1oJ7ehYCtLzgPK3h7HWfGmKg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cRQXhhicySut1yYoU+V16S/G69Bci/b3Sv4UVkXVYS4S+zs4kNOgh5k0j+WshKv85 q59YLPpmQQYdkyv4OdX99cmU3XyvViNZKlli9zsVSMXivjQWeEUAt4z1VU1KioFaZ/ FyxoyCsrfG5x8MscF7fqN+JfgabxHUJjCdH7UgRj+v3eFIpa/koMk9Zj3IDajfhLNV MwFnLYU+bYAyWgvCsU5+NDH7dyeJz7M4gw5cC/Akg9j6iTsgrcBCYHxKylNlxwFCno oVn5IsmJtbT+12jINzFh6syadCQ6EuCPJLgvh7laLRmXWd6hQQe6fpXYbOt4fbE+ot 8Atl9MJFEnTuQ== From: Masami Hiramatsu To: Steven Rostedt Cc: "Naveen N . Rao" , Ananth N Mavinakayanahalli , Ingo Molnar , linux-kernel@vger.kernel.org, mhiramat@kernel.org, Sven Schnelle , Catalin Marinas , Will Deacon , Russell King , Nathan Chancellor , Nick Desaulniers , linux-arm-kernel@lists.infradead.org Subject: [PATCH 6/8] ARM: clang: Do not relay on lr register for stacktrace Date: Fri, 8 Oct 2021 21:29:08 +0900 Message-Id: <163369614818.636038.5019945597127474028.stgit@devnote2> X-Mailer: git-send-email 2.25.1 In-Reply-To: <163369609308.636038.15295764725220907794.stgit@devnote2> References: <163369609308.636038.15295764725220907794.stgit@devnote2> User-Agent: StGit/0.19 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211008_052912_372217_0A429952 X-CRM114-Status: GOOD ( 12.26 ) 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 Currently the stacktrace on clang compiled arm kernel uses the 'lr' register to find the first frame address from pt_regs. However, that is wrong after calling another function, because the 'lr' register is used by 'bl' instruction and never be recovered. As same as gcc arm kernel, directly use the frame pointer (x11) of the pt_regs to find the first frame address. Signed-off-by: Masami Hiramatsu --- arch/arm/kernel/stacktrace.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c index 76ea4178a55c..db798eac7431 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c @@ -54,8 +54,7 @@ int notrace unwind_frame(struct stackframe *frame) frame->sp = frame->fp; frame->fp = *(unsigned long *)(fp); - frame->pc = frame->lr; - frame->lr = *(unsigned long *)(fp + 4); + frame->pc = *(unsigned long *)(fp + 4); #else /* check current frame pointer is within bounds */ if (fp < low + 12 || fp > high - 4) _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel