From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:56406 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726885AbeJWSnE (ORCPT ); Tue, 23 Oct 2018 14:43:04 -0400 Date: Tue, 23 Oct 2018 11:20:09 +0100 From: Will Deacon Subject: Re: [PATCH v5 07/17] arm64: add basic pointer authentication support Message-ID: <20181023102008.GA8989@brain-police> References: <20181005084754.20950-1-kristina.martsenko@arm.com> <20181005084754.20950-8-kristina.martsenko@arm.com> <20181019111542.6wrvjguirglzg7vg@mbp> <5ca5bf92-f2b7-48c9-ea41-5efeff09a799@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5ca5bf92-f2b7-48c9-ea41-5efeff09a799@arm.com> Sender: linux-arch-owner@vger.kernel.org List-ID: To: Ramana Radhakrishnan Cc: Catalin Marinas , Kristina Martsenko , "linux-arm-kernel@lists.infradead.org" , Mark Rutland , "linux-arch@vger.kernel.org" , Andrew Jones , Jacob Bramley , Arnd Bergmann , Ard Biesheuvel , Marc Zyngier , Adam Wallis , Suzuki Poulose , Christoffer Dall , "kvmarm@lists.cs.columbia.edu" , Amit Kachhap , Dave P Martin , "linux-kernel@vger.kernel.org" , Kees Cook nd Message-ID: <20181023102009.FWt2tPQFZhtBHd_t1oa40gJHTfhlxNxN_8lnKpq_N8A@z> On Tue, Oct 23, 2018 at 09:36:16AM +0100, Ramana Radhakrishnan wrote: > On 19/10/2018 12:15, Catalin Marinas wrote: > > On Fri, Oct 05, 2018 at 09:47:44AM +0100, Kristina Martsenko wrote: > >> diff --git a/arch/arm64/include/asm/pointer_auth.h b/arch/arm64/include/asm/pointer_auth.h > >> new file mode 100644 > >> index 000000000000..2aefedc31d9e > >> --- /dev/null > >> +++ b/arch/arm64/include/asm/pointer_auth.h > >> @@ -0,0 +1,63 @@ > >> +// SPDX-License-Identifier: GPL-2.0 > >> +#ifndef __ASM_POINTER_AUTH_H > >> +#define __ASM_POINTER_AUTH_H > >> + > >> +#include > >> + > >> +#include > >> +#include > >> + > >> +#ifdef CONFIG_ARM64_PTR_AUTH > >> +/* > >> + * Each key is a 128-bit quantity which is split across a pair of 64-bit > >> + * registers (Lo and Hi). > >> + */ > >> +struct ptrauth_key { > >> + unsigned long lo, hi; > >> +}; > >> + > >> +/* > >> + * We give each process its own instruction A key (APIAKey), which is shared by > >> + * all threads. This is inherited upon fork(), and reinitialised upon exec*(). > >> + * All other keys are currently unused, with APIBKey, APDAKey, and APBAKey > >> + * instructions behaving as NOPs. > >> + */ > > > > I don't remember the past discussions but I assume the tools guys are ok > > with a single key shared by multiple threads. Ramana, could you ack this > > part, FTR? > > Sorry about the slow response, I've been traveling. > > Ack and Will's response covers the reasons why pretty well. A prctl call > would be a good enhancement. One minor "gotcha" with that is that the glibc prctl() wrapper would need to be annotated not to use pointer auth, or we'd have to issue the syscall in-line. Will