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 05AFBC433FE for ; Tue, 9 Nov 2021 01:30:22 +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 C4831610E8 for ; Tue, 9 Nov 2021 01:30:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org C4831610E8 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=+xdWzea/BNDU+wsl113pOfM0zcpEs4KG8QdraAyPNiQ=; b=rWqdeyU7nMs9w9 HlqcaYakJUAp33dupUhsJOsaq5IvCnw22OOGl+cOXmpbpl80lz/FVPj0VLUWnNHooUWgikF2LhNlb zvwabiXaGhmUBSrrhSlQ20sfGuKTZjltBM6hK5DAZVgP/Kh42UPpORfEiHgfHIBbSKt351YPJ4zdN JMmbL7D8gCJxuoR5hYSgZbq4711X/mz+LiSLzxEWjQyGVb0i/+GZnRXuRPwlDEh2ZEKoi+7RxHDCz /Bt0WlNAj2T4WalHlB/mcSFnS2kjlbPnbjXzfPhigmhGeBIgyl7gnSBLRpy8WLQNoh3ZWXfwrwa76 T4MOasT/dM4HBRSmDDDQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mkFwV-000LMn-Qw; Tue, 09 Nov 2021 01:28:56 +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 1mkFam-000DG6-62 for linux-arm-kernel@lists.infradead.org; Tue, 09 Nov 2021 01:06:29 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id BEF6E61A0A; Tue, 9 Nov 2021 01:06:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1636419987; bh=n1IioQQzOH0POz7eaWR7ENdja0fn4A3UEsNKmpHT5UQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q1joH7j/3x185sChkhoLgFowaIczOLA7StVThjAG9EZnwUz538nuR37wRcz6iEP0V apcT+HacTgF5FYNwepcTrO2EFzDMJOPZTb6ABDGMCZUu+UUBrwDPGU7clP0YqP5fzR 8cWVzeiTB/foJ2PhkfMHkJ/6N0dnXGy6RWABZbHCicGKLYJ53PAXyDTB9VkRQNOK/U Z5QCoYG+sUqjJ42bmendONmvRmCKPH/Oglsu+t4Co1fXFJ0Me2JR7ukIgpqQXinzLO 4afVmbOYu3ZT+XhjiU/GjAskYBkjjuA0N2DSBHvANuS39Vp/A0vTSf4zymkgGyXzqp BxvpfilsOMpQg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Masami Hiramatsu , Nick Desaulniers , Steven Rostedt , Sasha Levin , linux@armlinux.org.uk, nathan@kernel.org, linux-arm-kernel@lists.infradead.org, llvm@lists.linux.dev Subject: [PATCH AUTOSEL 4.19 38/47] ARM: clang: Do not rely on lr register for stacktrace Date: Mon, 8 Nov 2021 12:50:22 -0500 Message-Id: <20211108175031.1190422-38-sashal@kernel.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211108175031.1190422-1-sashal@kernel.org> References: <20211108175031.1190422-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211108_170628_279641_68FC3028 X-CRM114-Status: GOOD ( 11.53 ) 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 From: Masami Hiramatsu [ Upstream commit b3ea5d56f212ad81328c82454829a736197ebccc ] 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 (r11) of the pt_regs to find the first frame address. Note that this fixes kretprobe stacktrace issue only with CONFIG_UNWINDER_FRAME_POINTER=y. For the CONFIG_UNWINDER_ARM, we need another fix. Signed-off-by: Masami Hiramatsu Reviewed-by: Nick Desaulniers Signed-off-by: Steven Rostedt (VMware) Signed-off-by: Sasha Levin --- 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 d23ab9ec130a3..a452b859f485f 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c @@ -53,8 +53,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) -- 2.33.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel