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 X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D6F4AC5519F for ; Wed, 18 Nov 2020 12:35:03 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 54A8924180 for ; Wed, 18 Nov 2020 12:35:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="tDkPu1gp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 54A8924180 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ZgxL/h/6i9THRrSWjCKc4yW632qnzWYlc+1frJTp/9g=; b=tDkPu1gpYd9aXMKqvkDgoyF14 UNM6hiCacBYE3kI8vm9y6iwL7Eisod8aboD/FdxXqJo1qajdUzJ31XFbgHV9JIuIlUUsv0H+ohcus OvyztgqjNVkB2ipjYLI5KNaEtXJuQlpNxzkBEdPfV1/qN8pgFQ0G51OxKApwCCJ61uiA1yO7Env4k T4O6QSh65wLGf7KPmyAmYhK1rvI1v3m01R2NLuOjmdlHJJ2RajGjoBV6IsbavDEkqf3bjNt7AZmqZ h0pWaK0xTAi7UhN9RYNyG/8vRGlQawx8kQayCKajEropMlT3+ZOxELpEtZN94vFs9or6Smopkp4tb sBPtkrM/g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfMef-0002IS-7Q; Wed, 18 Nov 2020 12:33:45 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfMec-0002He-9g for linux-arm-kernel@lists.infradead.org; Wed, 18 Nov 2020 12:33:43 +0000 Received: from trantor (unknown [2.26.170.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 09AE6238E6; Wed, 18 Nov 2020 12:33:38 +0000 (UTC) Date: Wed, 18 Nov 2020 12:33:36 +0000 From: Catalin Marinas To: Szabolcs Nagy Subject: Re: [PATCH v2] arm64: Introduce prctl(PR_PAC_{SET,GET}_ENABLED_KEYS) Message-ID: References: <20201014055106.25164-1-pcc@google.com> <87blfv6fj3.fsf@mid.deneb.enyo.de> <20201117183911.GI15033@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20201117183911.GI15033@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201118_073342_439058_74EB3781 X-CRM114-Status: GOOD ( 24.68 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: libc-alpha@sourceware.org, Will Deacon , Linux API , Kevin Brodsky , Kostya Serebryany , Florian Weimer , Linux ARM , Andrey Konovalov , Vincenzo Frascino , Peter Collingbourne , Dave Martin , Evgenii Stepanov 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 On Tue, Nov 17, 2020 at 06:39:13PM +0000, Szabolcs Nagy wrote: > The 11/17/2020 10:17, Peter Collingbourne via Libc-alpha wrote: > > On Tue, Nov 17, 2020 at 9:48 AM Florian Weimer wrote: > > > > > > * Peter Collingbourne: > > > > > > > This prctl allows the user program to control which PAC keys are enabled > > > > in a particular task. The main reason why this is useful is to enable a > > > > userspace ABI that uses PAC to sign and authenticate function pointers > > > > and other pointers exposed outside of the function, while still allowing > > > > binaries conforming to the ABI to interoperate with legacy binaries that > > > > do not sign or authenticate pointers. > > > > > > > > The idea is that a dynamic loader or early startup code would issue > > > > this prctl very early after establishing that a process may load legacy > > > > binaries, but before executing any PAC instructions. > > > > > > I thought that the silicon did not support this? I think the past discussion we had was around enabling PAC for kernel while disabling it for user. The hardware doesn't give us separate bits, so Peter's patch toggles them on kernel entry/return, with some overhead given by the MSR+ISB (to be added). > > See e.g. the documentation for SCTLR_EL1.EnIA [1] for details. There > > are also enable bits for the other three keys. > > i think it was insufficiently clear in the architecture > spec how that can be context switched. (but it probably > changed) The bits that we can't toggle easily have the comment "This field is permitted to be cached in the TLB" in the ARM ARM. Luckily, it's not the case for EnI*. -- Catalin _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel