Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp2796861ybh; Mon, 16 Mar 2020 09:53:03 -0700 (PDT) X-Google-Smtp-Source: ADFU+vv5QnsSa00qq6gzPmfrzNA5iS3b9MT+a4Blhd3n7pigFyEjdBFyEC9Kc8SyptEsASeBqRfY X-Received: by 2002:a05:6830:1bc9:: with SMTP id v9mr121758ota.319.1584377583759; Mon, 16 Mar 2020 09:53:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584377583; cv=none; d=google.com; s=arc-20160816; b=FqABnsSgtkVEsQlbBIW+bQ11JVNEjFLLucLR4MugvPpIchdUTvZgZwxHX6+XliVE/4 YUXL81sFMOoqPCUcugBUAKf1U7s7inT1/1vP4R7bNcfKws3WUWgYKZk4L5aeIxETsz3e X4PlXvC4hfeSoxZMYJ6Ci5UGXrDFNtros8IatJT7xZqjPYBcIL59PQxqfmfZkba8btY0 OVoR8MlGbSKpEJL39fyejjQriNPOicaPrkQQ7S6W92Ze3+f+xl15DE4h4E/MWmAzDgIv bmXPA36+aqSVmg/mxvKYuGVUD0MyrDA7FFLOxP9785vxLnxUu+2MLfP6JoRQDRnZqs5C jSIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=2EnG0pebq3Kr9ebn89uZg7evBkIPktZ+b7F0vWbvIe4=; b=jbAFvlfTllhSCVcf1JHXsP0Qb78HfcCwRNEVt1x+dO215S0/Og9QGMKHKMX/e9HYql UIg4LC8Y0U9zb+ftdXnOBMy513m+P2tfPmC1vTjrlZ+nriB20bMA256t3IyJkTXG9ucB yP7I1ap9YGkBc+jYn+0q16fpmxmTLqqaGqI1b3VFdII9RUmpQRUHEKG5LAIOZ012tORr vsdXMmsf/9SGy73hPAnfsF+jTlaSkITzfJsIh9ar/gnm7rWGMp8mM7JES35FAQ2+xWJ6 86/qNJqRMYYix0suCRshk4G8L8Iaof+CRRsTlu85yhNDupAI5xZR5iRTw7SwElsB/WTw DkCQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x14si235069oto.47.2020.03.16.09.52.50; Mon, 16 Mar 2020 09:53:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732245AbgCPQvR (ORCPT + 99 others); Mon, 16 Mar 2020 12:51:17 -0400 Received: from foss.arm.com ([217.140.110.172]:52188 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732228AbgCPQvM (ORCPT ); Mon, 16 Mar 2020 12:51:12 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 02E3F11FB; Mon, 16 Mar 2020 09:51:12 -0700 (PDT) Received: from localhost (unknown [10.37.6.21]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 568BA3F67D; Mon, 16 Mar 2020 09:51:11 -0700 (PDT) From: Mark Brown To: Catalin Marinas , Will Deacon Cc: Alexander Viro , Paul Elliott , Peter Zijlstra , Yu-cheng Yu , Amit Kachhap , Vincenzo Frascino , Marc Zyngier , Eugene Syromiatnikov , Szabolcs Nagy , "H . J . Lu " , Andrew Jones , Kees Cook , Arnd Bergmann , Jann Horn , Richard Henderson , =?UTF-8?q?Kristina=20Mart=C5=A1enko?= , Thomas Gleixner , Florian Weimer , Sudakshina Das , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-fsdevel@vger.kernel.org, Dave Martin , Mark Brown Subject: [PATCH v10 06/13] arm64: BTI: Decode BYTPE bits when printing PSTATE Date: Mon, 16 Mar 2020 16:50:48 +0000 Message-Id: <20200316165055.31179-7-broonie@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200316165055.31179-1-broonie@kernel.org> References: <20200316165055.31179-1-broonie@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dave Martin The current code to print PSTATE symbolically when generating backtraces etc., does not include the BYTPE field used by Branch Target Identification. So, decode BYTPE and print it too. In the interests of human-readability, print the classes of BTI matched. The symbolic notation, BYTPE (PSTATE[11:10]) and permitted classes of subsequent instruction are: -- (BTYPE=0b00): any insn jc (BTYPE=0b01): BTI jc, BTI j, BTI c, PACIxSP -c (BYTPE=0b10): BTI jc, BTI c, PACIxSP j- (BTYPE=0b11): BTI jc, BTI j Signed-off-by: Dave Martin Reviewed-by: Kees Cook Signed-off-by: Mark Brown --- arch/arm64/kernel/process.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index b8e3faa8d406..24af13d7bde6 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -211,6 +211,15 @@ void machine_restart(char *cmd) while (1); } +#define bstr(suffix, str) [PSR_BTYPE_ ## suffix >> PSR_BTYPE_SHIFT] = str +static const char *const btypes[] = { + bstr(NONE, "--"), + bstr( JC, "jc"), + bstr( C, "-c"), + bstr( J , "j-") +}; +#undef bstr + static void print_pstate(struct pt_regs *regs) { u64 pstate = regs->pstate; @@ -229,7 +238,10 @@ static void print_pstate(struct pt_regs *regs) pstate & PSR_AA32_I_BIT ? 'I' : 'i', pstate & PSR_AA32_F_BIT ? 'F' : 'f'); } else { - printk("pstate: %08llx (%c%c%c%c %c%c%c%c %cPAN %cUAO)\n", + const char *btype_str = btypes[(pstate & PSR_BTYPE_MASK) >> + PSR_BTYPE_SHIFT]; + + printk("pstate: %08llx (%c%c%c%c %c%c%c%c %cPAN %cUAO BTYPE=%s)\n", pstate, pstate & PSR_N_BIT ? 'N' : 'n', pstate & PSR_Z_BIT ? 'Z' : 'z', @@ -240,7 +252,8 @@ static void print_pstate(struct pt_regs *regs) pstate & PSR_I_BIT ? 'I' : 'i', pstate & PSR_F_BIT ? 'F' : 'f', pstate & PSR_PAN_BIT ? '+' : '-', - pstate & PSR_UAO_BIT ? '+' : '-'); + pstate & PSR_UAO_BIT ? '+' : '-', + btype_str); } } -- 2.20.1