From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5CB7E3238 for ; Tue, 5 Apr 2022 22:20:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DA40C385A0; Tue, 5 Apr 2022 22:20:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1649197242; bh=qJghuGy/OuEqalpvRzR2kBCn0g3XnrF0PtfYrf8Qnho=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=uEIBisQvUi2erYjNPoIy9BoeCr8KLxb26lSWeFpx5gGe2SeeYU9nkopCf90wWxg/v RyV8YdIEIh5Pu9r3D8Pg78/08K26fFvnn0ONOh/Xxo1xBUxsGOr6clGX1QfidivmUG 35huDiCvB6dke3UbzIWt3oYTUC8FXIk5LMn6GIrkkZbtJI1j41EM8LUMBepuGwHNMZ u7wO/3lkKQfQIQh+tLoJ1WCYX0dQVXYgB3kOKydJ5KWyFtR2QLMtNLszbFXl4O4/xF dVpadq7flnYzS03d2nU5ql5kg5L0MoDQCYJKxDvs3tpguA+64XRZwvZ4eQQDV+9ZVA JV1ntbdelGbZg== Date: Tue, 5 Apr 2022 15:20:39 -0700 From: Nathan Chancellor To: Sami Tolvanen Cc: Kees Cook , Catalin Marinas , Mark Rutland , Masahiro Yamada , Nick Desaulniers , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev Subject: Re: [PATCH v2] cfi: Use __builtin_function_start Message-ID: References: <20220405221618.633743-1-samitolvanen@google.com> Precedence: bulk X-Mailing-List: llvm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20220405221618.633743-1-samitolvanen@google.com> On Tue, Apr 05, 2022 at 03:16:18PM -0700, Sami Tolvanen wrote: > Clang 14 added support for the __builtin_function_start function, > which allows us to implement the function_nocfi macro without > architecture-specific inline assembly and in a way that also works > with static initializers. > > Change CONFIG_CFI_CLANG to depend on Clang >= 14, define > function_nocfi using __builtin_function_start, and remove the arm64 > inline assembly implementation. > > Link: https://github.com/llvm/llvm-project/commit/ec2e26eaf63558934f5b73a6e530edc453cf9508 > Link: https://github.com/ClangBuiltLinux/linux/issues/1353 > Signed-off-by: Sami Tolvanen > Reviewed-by: Nick Desaulniers > Reviewed-by: Mark Rutland > Tested-by: Mark Rutland > Acked-by: Will Deacon # arm64 Reviewed-by: Nathan Chancellor > --- > v2: > - Changed CFI_CLANG to depend on Clang 14 instead of > __builtin_function_start. > - Squashed all three patches into one. > > --- > arch/Kconfig | 5 +---- > arch/arm64/include/asm/compiler.h | 16 ---------------- > include/linux/compiler-clang.h | 10 ++++++++++ > 3 files changed, 11 insertions(+), 20 deletions(-) > > diff --git a/arch/Kconfig b/arch/Kconfig > index 29b0167c088b..c1627bce4a3a 100644 > --- a/arch/Kconfig > +++ b/arch/Kconfig > @@ -723,10 +723,7 @@ config ARCH_SUPPORTS_CFI_CLANG > config CFI_CLANG > bool "Use Clang's Control Flow Integrity (CFI)" > depends on LTO_CLANG && ARCH_SUPPORTS_CFI_CLANG > - # Clang >= 12: > - # - https://bugs.llvm.org/show_bug.cgi?id=46258 > - # - https://bugs.llvm.org/show_bug.cgi?id=47479 > - depends on CLANG_VERSION >= 120000 > + depends on CLANG_VERSION >= 140000 > select KALLSYMS > help > This option enables Clang’s forward-edge Control Flow Integrity > diff --git a/arch/arm64/include/asm/compiler.h b/arch/arm64/include/asm/compiler.h > index dc3ea4080e2e..6fb2e6bcc392 100644 > --- a/arch/arm64/include/asm/compiler.h > +++ b/arch/arm64/include/asm/compiler.h > @@ -23,20 +23,4 @@ > #define __builtin_return_address(val) \ > (void *)(ptrauth_clear_pac((unsigned long)__builtin_return_address(val))) > > -#ifdef CONFIG_CFI_CLANG > -/* > - * With CONFIG_CFI_CLANG, the compiler replaces function address > - * references with the address of the function's CFI jump table > - * entry. The function_nocfi macro always returns the address of the > - * actual function instead. > - */ > -#define function_nocfi(x) ({ \ > - void *addr; \ > - asm("adrp %0, " __stringify(x) "\n\t" \ > - "add %0, %0, :lo12:" __stringify(x) \ > - : "=r" (addr)); \ > - addr; \ > -}) > -#endif > - > #endif /* __ASM_COMPILER_H */ > diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h > index babb1347148c..c84fec767445 100644 > --- a/include/linux/compiler-clang.h > +++ b/include/linux/compiler-clang.h > @@ -69,6 +69,16 @@ > #define __nocfi __attribute__((__no_sanitize__("cfi"))) > #define __cficanonical __attribute__((__cfi_canonical_jump_table__)) > > +#if defined(CONFIG_CFI_CLANG) > +/* > + * With CONFIG_CFI_CLANG, the compiler replaces function address > + * references with the address of the function's CFI jump table > + * entry. The function_nocfi macro always returns the address of the > + * actual function instead. > + */ > +#define function_nocfi(x) __builtin_function_start(x) > +#endif > + > /* > * Turn individual warnings and errors on and off locally, depending > * on version. > -- > 2.35.1.1094.g7c7d902a7c-goog > 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id C62F5C433F5 for ; Tue, 5 Apr 2022 22:21:46 +0000 (UTC) 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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc: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=7aeuw9GiOpOzoGwu+BM7jbZwezU5KEqoSkJOwur0AWM=; b=rJoXld1pmuSuVk n7XC1i+Pu+xLQ9dHyZkQ3gp81RdSF5K4nd1QjM9+pCcKBkqPz7/4ygXcMHzi3h9OoffhLfVd84ukz xlEzGdTg7u+dNtO71RCUkiBth766pLnI0MyHKVolMMC+yUGu8eGPv03VPGEmlInulLUUbas49bOQ/ jyfYiWpVb4EwMlQ36MKNBdhRzu44p78zuuMSD0K5IdpggQsm1lC/mGebPAkKwt80V2nFSpW0j2d2G IY14+uqSMH2u3oX8dWuczGMA5P2qg7Q1ZZgDeBOwjz3elJ0496497hbv/85S7VpDLQVO3/kY8PQLt VIXM0xlpAbJEq7Y4LRBA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbrXa-002rWs-J3; Tue, 05 Apr 2022 22:20:46 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbrXY-002rVa-0u for linux-arm-kernel@lists.infradead.org; Tue, 05 Apr 2022 22:20:45 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A639661899; Tue, 5 Apr 2022 22:20:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DA40C385A0; Tue, 5 Apr 2022 22:20:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1649197242; bh=qJghuGy/OuEqalpvRzR2kBCn0g3XnrF0PtfYrf8Qnho=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=uEIBisQvUi2erYjNPoIy9BoeCr8KLxb26lSWeFpx5gGe2SeeYU9nkopCf90wWxg/v RyV8YdIEIh5Pu9r3D8Pg78/08K26fFvnn0ONOh/Xxo1xBUxsGOr6clGX1QfidivmUG 35huDiCvB6dke3UbzIWt3oYTUC8FXIk5LMn6GIrkkZbtJI1j41EM8LUMBepuGwHNMZ u7wO/3lkKQfQIQh+tLoJ1WCYX0dQVXYgB3kOKydJ5KWyFtR2QLMtNLszbFXl4O4/xF dVpadq7flnYzS03d2nU5ql5kg5L0MoDQCYJKxDvs3tpguA+64XRZwvZ4eQQDV+9ZVA JV1ntbdelGbZg== Date: Tue, 5 Apr 2022 15:20:39 -0700 From: Nathan Chancellor To: Sami Tolvanen Cc: Kees Cook , Catalin Marinas , Mark Rutland , Masahiro Yamada , Nick Desaulniers , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev Subject: Re: [PATCH v2] cfi: Use __builtin_function_start Message-ID: References: <20220405221618.633743-1-samitolvanen@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220405221618.633743-1-samitolvanen@google.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220405_152044_189126_876C26A9 X-CRM114-Status: GOOD ( 24.08 ) 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="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCBBcHIgMDUsIDIwMjIgYXQgMDM6MTY6MThQTSAtMDcwMCwgU2FtaSBUb2x2YW5lbiB3 cm90ZToKPiBDbGFuZyAxNCBhZGRlZCBzdXBwb3J0IGZvciB0aGUgX19idWlsdGluX2Z1bmN0aW9u X3N0YXJ0IGZ1bmN0aW9uLAo+IHdoaWNoIGFsbG93cyB1cyB0byBpbXBsZW1lbnQgdGhlIGZ1bmN0 aW9uX25vY2ZpIG1hY3JvIHdpdGhvdXQKPiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW5saW5lIGFz c2VtYmx5IGFuZCBpbiBhIHdheSB0aGF0IGFsc28gd29ya3MKPiB3aXRoIHN0YXRpYyBpbml0aWFs aXplcnMuCj4gCj4gQ2hhbmdlIENPTkZJR19DRklfQ0xBTkcgdG8gZGVwZW5kIG9uIENsYW5nID49 IDE0LCBkZWZpbmUKPiBmdW5jdGlvbl9ub2NmaSB1c2luZyBfX2J1aWx0aW5fZnVuY3Rpb25fc3Rh cnQsIGFuZCByZW1vdmUgdGhlIGFybTY0Cj4gaW5saW5lIGFzc2VtYmx5IGltcGxlbWVudGF0aW9u Lgo+IAo+IExpbms6IGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9jb21taXQv ZWMyZTI2ZWFmNjM1NTg5MzRmNWI3M2E2ZTUzMGVkYzQ1M2NmOTUwOAo+IExpbms6IGh0dHBzOi8v Z2l0aHViLmNvbS9DbGFuZ0J1aWx0TGludXgvbGludXgvaXNzdWVzLzEzNTMKPiBTaWduZWQtb2Zm LWJ5OiBTYW1pIFRvbHZhbmVuIDxzYW1pdG9sdmFuZW5AZ29vZ2xlLmNvbT4KPiBSZXZpZXdlZC1i eTogTmljayBEZXNhdWxuaWVycyA8bmRlc2F1bG5pZXJzQGdvb2dsZS5jb20+Cj4gUmV2aWV3ZWQt Ynk6IE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+Cj4gVGVzdGVkLWJ5OiBNYXJr IFJ1dGxhbmQgPG1hcmsucnV0bGFuZEBhcm0uY29tPgo+IEFja2VkLWJ5OiBXaWxsIERlYWNvbiA8 d2lsbEBrZXJuZWwub3JnPiAjIGFybTY0CgpSZXZpZXdlZC1ieTogTmF0aGFuIENoYW5jZWxsb3Ig PG5hdGhhbkBrZXJuZWwub3JnPgoKPiAtLS0KPiB2MjoKPiAtIENoYW5nZWQgQ0ZJX0NMQU5HIHRv IGRlcGVuZCBvbiBDbGFuZyAxNCBpbnN0ZWFkIG9mCj4gICBfX2J1aWx0aW5fZnVuY3Rpb25fc3Rh cnQuCj4gLSBTcXVhc2hlZCBhbGwgdGhyZWUgcGF0Y2hlcyBpbnRvIG9uZS4KPiAKPiAtLS0KPiAg YXJjaC9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKy0tLS0KPiAgYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9jb21waWxlci5oIHwgMTYgLS0tLS0tLS0tLS0tLS0tLQo+ICBpbmNsdWRl L2xpbnV4L2NvbXBpbGVyLWNsYW5nLmggICAgfCAxMCArKysrKysrKysrCj4gIDMgZmlsZXMgY2hh bmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2FyY2gvS2NvbmZpZyBiL2FyY2gvS2NvbmZpZwo+IGluZGV4IDI5YjAxNjdjMDg4Yi4uYzE2Mjdi Y2U0YTNhIDEwMDY0NAo+IC0tLSBhL2FyY2gvS2NvbmZpZwo+ICsrKyBiL2FyY2gvS2NvbmZpZwo+ IEBAIC03MjMsMTAgKzcyMyw3IEBAIGNvbmZpZyBBUkNIX1NVUFBPUlRTX0NGSV9DTEFORwo+ICBj b25maWcgQ0ZJX0NMQU5HCj4gIAlib29sICJVc2UgQ2xhbmcncyBDb250cm9sIEZsb3cgSW50ZWdy aXR5IChDRkkpIgo+ICAJZGVwZW5kcyBvbiBMVE9fQ0xBTkcgJiYgQVJDSF9TVVBQT1JUU19DRklf Q0xBTkcKPiAtCSMgQ2xhbmcgPj0gMTI6Cj4gLQkjIC0gaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3No b3dfYnVnLmNnaT9pZD00NjI1OAo+IC0JIyAtIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9NDc0NzkKPiAtCWRlcGVuZHMgb24gQ0xBTkdfVkVSU0lPTiA+PSAxMjAwMDAKPiAr CWRlcGVuZHMgb24gQ0xBTkdfVkVSU0lPTiA+PSAxNDAwMDAKPiAgCXNlbGVjdCBLQUxMU1lNUwo+ ICAJaGVscAo+ICAJICBUaGlzIG9wdGlvbiBlbmFibGVzIENsYW5n4oCZcyBmb3J3YXJkLWVkZ2Ug Q29udHJvbCBGbG93IEludGVncml0eQo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUv YXNtL2NvbXBpbGVyLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NvbXBpbGVyLmgKPiBpbmRl eCBkYzNlYTQwODBlMmUuLjZmYjJlNmJjYzM5MiAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2NvbXBpbGVyLmgKPiArKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NvbXBp bGVyLmgKPiBAQCAtMjMsMjAgKzIzLDQgQEAKPiAgI2RlZmluZSBfX2J1aWx0aW5fcmV0dXJuX2Fk ZHJlc3ModmFsKQkJCQkJXAo+ICAJKHZvaWQgKikocHRyYXV0aF9jbGVhcl9wYWMoKHVuc2lnbmVk IGxvbmcpX19idWlsdGluX3JldHVybl9hZGRyZXNzKHZhbCkpKQo+ICAKPiAtI2lmZGVmIENPTkZJ R19DRklfQ0xBTkcKPiAtLyoKPiAtICogV2l0aCBDT05GSUdfQ0ZJX0NMQU5HLCB0aGUgY29tcGls ZXIgcmVwbGFjZXMgZnVuY3Rpb24gYWRkcmVzcwo+IC0gKiByZWZlcmVuY2VzIHdpdGggdGhlIGFk ZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uJ3MgQ0ZJIGp1bXAgdGFibGUKPiAtICogZW50cnkuIFRoZSBm dW5jdGlvbl9ub2NmaSBtYWNybyBhbHdheXMgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUKPiAt ICogYWN0dWFsIGZ1bmN0aW9uIGluc3RlYWQuCj4gLSAqLwo+IC0jZGVmaW5lIGZ1bmN0aW9uX25v Y2ZpKHgpICh7CQkJCQkJXAo+IC0Jdm9pZCAqYWRkcjsJCQkJCQkJXAo+IC0JYXNtKCJhZHJwICUw LCAiIF9fc3RyaW5naWZ5KHgpICJcblx0IgkJCQlcCj4gLQkgICAgImFkZCAgJTAsICUwLCA6bG8x MjoiIF9fc3RyaW5naWZ5KHgpCQkJXAo+IC0JICAgIDogIj1yIiAoYWRkcikpOwkJCQkJCVwKPiAt CWFkZHI7CQkJCQkJCQlcCj4gLX0pCj4gLSNlbmRpZgo+IC0KPiAgI2VuZGlmIC8qIF9fQVNNX0NP TVBJTEVSX0ggKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jb21waWxlci1jbGFuZy5o IGIvaW5jbHVkZS9saW51eC9jb21waWxlci1jbGFuZy5oCj4gaW5kZXggYmFiYjEzNDcxNDhjLi5j ODRmZWM3Njc0NDUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9jb21waWxlci1jbGFuZy5o Cj4gKysrIGIvaW5jbHVkZS9saW51eC9jb21waWxlci1jbGFuZy5oCj4gQEAgLTY5LDYgKzY5LDE2 IEBACj4gICNkZWZpbmUgX19ub2NmaQkJX19hdHRyaWJ1dGVfXygoX19ub19zYW5pdGl6ZV9fKCJj ZmkiKSkpCj4gICNkZWZpbmUgX19jZmljYW5vbmljYWwJX19hdHRyaWJ1dGVfXygoX19jZmlfY2Fu b25pY2FsX2p1bXBfdGFibGVfXykpCj4gIAo+ICsjaWYgZGVmaW5lZChDT05GSUdfQ0ZJX0NMQU5H KQo+ICsvKgo+ICsgKiBXaXRoIENPTkZJR19DRklfQ0xBTkcsIHRoZSBjb21waWxlciByZXBsYWNl cyBmdW5jdGlvbiBhZGRyZXNzCj4gKyAqIHJlZmVyZW5jZXMgd2l0aCB0aGUgYWRkcmVzcyBvZiB0 aGUgZnVuY3Rpb24ncyBDRkkganVtcCB0YWJsZQo+ICsgKiBlbnRyeS4gVGhlIGZ1bmN0aW9uX25v Y2ZpIG1hY3JvIGFsd2F5cyByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZQo+ICsgKiBhY3R1YWwg ZnVuY3Rpb24gaW5zdGVhZC4KPiArICovCj4gKyNkZWZpbmUgZnVuY3Rpb25fbm9jZmkoeCkJX19i dWlsdGluX2Z1bmN0aW9uX3N0YXJ0KHgpCj4gKyNlbmRpZgo+ICsKPiAgLyoKPiAgICogVHVybiBp bmRpdmlkdWFsIHdhcm5pbmdzIGFuZCBlcnJvcnMgb24gYW5kIG9mZiBsb2NhbGx5LCBkZXBlbmRp bmcKPiAgICogb24gdmVyc2lvbi4KPiAtLSAKPiAyLjM1LjEuMTA5NC5nN2M3ZDkwMmE3Yy1nb29n Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCg==