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 65A13C433EF for ; Thu, 21 Oct 2021 00:58:05 +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 28F1660E97 for ; Thu, 21 Oct 2021 00:58:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 28F1660E97 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=J8BfmDls14t4heXQnTJB0eRkeSRc2l+KHS7klm80/GA=; b=FwZy5NOLTGi8i4 kN8SSN0LkMhmJfXZqtz8vBTdqkF0VXLHx7cBYgYvOOI5HRushw/gRbMcmIaWN1aq8+31XdFnCZpaK Y2u6rFcKcQJXZhPewMpbsyjvNgyFo+hCnTjmREe5zqOP6gYv4QIy0Zo5LA8UqEO6gER7uZzFCJVuk E0tiOmLYZPXmLyte8dextYich/rLtgK7r4QgQ2akFB0TyPS9FmlIMgsYtgNUh0Eul/W2NXAX+fWBa yjIUYZSM7xULeFaOyChrAVXB91qsrc7d0bFeIsEArqPC0AsxRkqX7hEfVcWP46yib8hXDwleRfKpe 9UuZu9BIpOq6dBl0kkxg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdMNr-0068ab-Vm; Thu, 21 Oct 2021 00:56:40 +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 1mdMMb-0067tF-0U for linux-arm-kernel@lists.infradead.org; Thu, 21 Oct 2021 00:55:22 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3B052610A1; Thu, 21 Oct 2021 00:55:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1634777720; bh=WqIiiFEaJiQvJq7Z5CrnA44AmFZAiLP70n+lEDL0ZZw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Rrc3x0PQtBl+jJxPYLxvEJa1gL8qJeSOIT/WdB1F9unisTMJ0qRNBU2b0lX9nS0NU FMdlhk1okPOs7djg+IcG1swg8hbe+zY20W64wUNz3bkkFu6P2kClPR2iIBJcQMYQQh O9tUMHRRn9YUhqTrXje//6rJZ+pGOfWkhHJZnh8k4puutQU12a7/dcrg7coDrchI6p hjS9GdYF3Ukaxn33B2uZLxJ/7o2xOG8ofx6ucqGEqtqDeVoZ7TVSNQrCV/6kwphEFI KpoWCmTVn4AYTPTjrZreELbMUWAfbdrMqcbpzo638QzVxMLCMsXwntoC+I31dxWzCv c7TP1t4aXZu2A== 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 v3 7/9] ARM: clang: Do not rely on lr register for stacktrace Date: Thu, 21 Oct 2021 09:55:17 +0900 Message-Id: <163477771763.264901.13199943018441108332.stgit@devnote2> X-Mailer: git-send-email 2.25.1 In-Reply-To: <163477765570.264901.3851692300287671122.stgit@devnote2> References: <163477765570.264901.3851692300287671122.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-20211020_175521_111974_9E1F7AC8 X-CRM114-Status: GOOD ( 12.90 ) 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 (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 --- Changes in v2: - Fix typos in changelog. --- 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