All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sami Tolvanen <samitolvanen@google.com>
To: Kees Cook <keescook@chromium.org>
Cc: Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Will Deacon <will@kernel.org>, Jessica Yu <jeyu@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>, Tejun Heo <tj@kernel.org>,
	bpf@vger.kernel.org, linux-hardening@vger.kernel.org,
	linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kbuild@vger.kernel.org, linux-pci@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Sami Tolvanen <samitolvanen@google.com>
Subject: [PATCH 14/17] arm64: add __nocfi to functions that jump to a physical address
Date: Thu, 11 Mar 2021 16:49:16 -0800	[thread overview]
Message-ID: <20210312004919.669614-15-samitolvanen@google.com> (raw)
In-Reply-To: <20210312004919.669614-1-samitolvanen@google.com>

Disable CFI checking for functions that switch to linear mapping and
make an indirect call to a physical address, since the compiler only
understands virtual addresses and the CFI check for such indirect calls
would always fail.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
---
 arch/arm64/include/asm/mmu_context.h | 2 +-
 arch/arm64/kernel/cpu-reset.h        | 8 ++++----
 arch/arm64/kernel/cpufeature.c       | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h
index 519d535532be..27f3797baa2e 100644
--- a/arch/arm64/include/asm/mmu_context.h
+++ b/arch/arm64/include/asm/mmu_context.h
@@ -136,7 +136,7 @@ static inline void cpu_install_idmap(void)
  * Atomically replaces the active TTBR1_EL1 PGD with a new VA-compatible PGD,
  * avoiding the possibility of conflicting TLB entries being allocated.
  */
-static inline void cpu_replace_ttbr1(pgd_t *pgdp)
+static inline void __nocfi cpu_replace_ttbr1(pgd_t *pgdp)
 {
 	typedef void (ttbr_replace_func)(phys_addr_t);
 	extern ttbr_replace_func idmap_cpu_replace_ttbr1;
diff --git a/arch/arm64/kernel/cpu-reset.h b/arch/arm64/kernel/cpu-reset.h
index dfba8cf921e5..a05bda363272 100644
--- a/arch/arm64/kernel/cpu-reset.h
+++ b/arch/arm64/kernel/cpu-reset.h
@@ -13,10 +13,10 @@
 void __cpu_soft_restart(unsigned long el2_switch, unsigned long entry,
 	unsigned long arg0, unsigned long arg1, unsigned long arg2);
 
-static inline void __noreturn cpu_soft_restart(unsigned long entry,
-					       unsigned long arg0,
-					       unsigned long arg1,
-					       unsigned long arg2)
+static inline void __noreturn __nocfi cpu_soft_restart(unsigned long entry,
+						       unsigned long arg0,
+						       unsigned long arg1,
+						       unsigned long arg2)
 {
 	typeof(__cpu_soft_restart) *restart;
 
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 7ec1c2ccdc0b..473212ff4d70 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -1443,7 +1443,7 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,
 }
 
 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0
-static void
+static void __nocfi
 kpti_install_ng_mappings(const struct arm64_cpu_capabilities *__unused)
 {
 	typedef void (kpti_remap_fn)(int, int, phys_addr_t);
-- 
2.31.0.rc2.261.g7f71774620-goog


WARNING: multiple messages have this Message-ID (diff)
From: Sami Tolvanen <samitolvanen@google.com>
To: Kees Cook <keescook@chromium.org>
Cc: Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	 Masahiro Yamada <masahiroy@kernel.org>,
	Will Deacon <will@kernel.org>, Jessica Yu <jeyu@kernel.org>,
	 Arnd Bergmann <arnd@arndb.de>, Tejun Heo <tj@kernel.org>,
	bpf@vger.kernel.org,  linux-hardening@vger.kernel.org,
	linux-arch@vger.kernel.org,
	 linux-arm-kernel@lists.infradead.org,
	linux-kbuild@vger.kernel.org,  linux-pci@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	 Sami Tolvanen <samitolvanen@google.com>
Subject: [PATCH 14/17] arm64: add __nocfi to functions that jump to a physical address
Date: Thu, 11 Mar 2021 16:49:16 -0800	[thread overview]
Message-ID: <20210312004919.669614-15-samitolvanen@google.com> (raw)
In-Reply-To: <20210312004919.669614-1-samitolvanen@google.com>

Disable CFI checking for functions that switch to linear mapping and
make an indirect call to a physical address, since the compiler only
understands virtual addresses and the CFI check for such indirect calls
would always fail.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
---
 arch/arm64/include/asm/mmu_context.h | 2 +-
 arch/arm64/kernel/cpu-reset.h        | 8 ++++----
 arch/arm64/kernel/cpufeature.c       | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h
index 519d535532be..27f3797baa2e 100644
--- a/arch/arm64/include/asm/mmu_context.h
+++ b/arch/arm64/include/asm/mmu_context.h
@@ -136,7 +136,7 @@ static inline void cpu_install_idmap(void)
  * Atomically replaces the active TTBR1_EL1 PGD with a new VA-compatible PGD,
  * avoiding the possibility of conflicting TLB entries being allocated.
  */
-static inline void cpu_replace_ttbr1(pgd_t *pgdp)
+static inline void __nocfi cpu_replace_ttbr1(pgd_t *pgdp)
 {
 	typedef void (ttbr_replace_func)(phys_addr_t);
 	extern ttbr_replace_func idmap_cpu_replace_ttbr1;
diff --git a/arch/arm64/kernel/cpu-reset.h b/arch/arm64/kernel/cpu-reset.h
index dfba8cf921e5..a05bda363272 100644
--- a/arch/arm64/kernel/cpu-reset.h
+++ b/arch/arm64/kernel/cpu-reset.h
@@ -13,10 +13,10 @@
 void __cpu_soft_restart(unsigned long el2_switch, unsigned long entry,
 	unsigned long arg0, unsigned long arg1, unsigned long arg2);
 
-static inline void __noreturn cpu_soft_restart(unsigned long entry,
-					       unsigned long arg0,
-					       unsigned long arg1,
-					       unsigned long arg2)
+static inline void __noreturn __nocfi cpu_soft_restart(unsigned long entry,
+						       unsigned long arg0,
+						       unsigned long arg1,
+						       unsigned long arg2)
 {
 	typeof(__cpu_soft_restart) *restart;
 
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 7ec1c2ccdc0b..473212ff4d70 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -1443,7 +1443,7 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,
 }
 
 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0
-static void
+static void __nocfi
 kpti_install_ng_mappings(const struct arm64_cpu_capabilities *__unused)
 {
 	typedef void (kpti_remap_fn)(int, int, phys_addr_t);
-- 
2.31.0.rc2.261.g7f71774620-goog


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2021-03-12  0:50 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-12  0:49 [PATCH 00/17] Add support for Clang CFI Sami Tolvanen
2021-03-12  0:49 ` Sami Tolvanen
2021-03-12  0:49 ` [PATCH 01/17] add " Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:39   ` Kees Cook
2021-03-12  2:39     ` Kees Cook
2021-03-12  0:49 ` [PATCH 02/17] cfi: add __cficanonical Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:40   ` Kees Cook
2021-03-12  2:40     ` Kees Cook
2021-03-12 20:28   ` Bjorn Helgaas
2021-03-12 20:28     ` Bjorn Helgaas
2021-03-12  0:49 ` [PATCH 03/17] mm: add generic __va_function and __pa_function macros Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:40   ` Kees Cook
2021-03-12  2:40     ` Kees Cook
2021-03-12  0:49 ` [PATCH 04/17] module: cfi: ensure __cfi_check alignment Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:39   ` Kees Cook
2021-03-12  2:39     ` Kees Cook
2021-03-16 20:03     ` Sami Tolvanen
2021-03-16 20:03       ` Sami Tolvanen
2021-03-12  0:49 ` [PATCH 05/17] workqueue: cfi: disable callback pointer check with modules Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:43   ` Kees Cook
2021-03-12  2:43     ` Kees Cook
2021-03-12  0:49 ` [PATCH 06/17] kthread: " Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:43   ` Kees Cook
2021-03-12  2:43     ` Kees Cook
2021-03-12  6:13   ` Christoph Hellwig
2021-03-12  6:13     ` Christoph Hellwig
2021-03-17 16:05     ` Sami Tolvanen
2021-03-17 16:05       ` Sami Tolvanen
2021-03-12  0:49 ` [PATCH 07/17] kallsyms: cfi: strip hashes from static functions Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:45   ` Kees Cook
2021-03-12  2:45     ` Kees Cook
2021-03-16 20:33     ` Sami Tolvanen
2021-03-16 20:33       ` Sami Tolvanen
2021-03-12  0:49 ` [PATCH 08/17] bpf: disable CFI in dispatcher functions Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:45   ` Kees Cook
2021-03-12  2:45     ` Kees Cook
2021-03-12  0:49 ` [PATCH 09/17] lib/list_sort: fix function type mismatches Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:45   ` Kees Cook
2021-03-12  2:45     ` Kees Cook
2021-03-12  0:49 ` [PATCH 10/17] lkdtm: use __va_function Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:45   ` Kees Cook
2021-03-12  2:45     ` Kees Cook
2021-03-12  0:49 ` [PATCH 11/17] psci: use __pa_function for cpu_resume Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:45   ` Kees Cook
2021-03-12  2:45     ` Kees Cook
2021-03-12  0:49 ` [PATCH 12/17] arm64: implement __va_function Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:46   ` Kees Cook
2021-03-12  2:46     ` Kees Cook
2021-03-12  0:49 ` [PATCH 13/17] arm64: use __pa_function Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:46   ` Kees Cook
2021-03-12  2:46     ` Kees Cook
2021-03-12  0:49 ` Sami Tolvanen [this message]
2021-03-12  0:49   ` [PATCH 14/17] arm64: add __nocfi to functions that jump to a physical address Sami Tolvanen
2021-03-12  2:47   ` Kees Cook
2021-03-12  2:47     ` Kees Cook
2021-03-12  0:49 ` [PATCH 15/17] arm64: add __nocfi to __apply_alternatives Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:50   ` Kees Cook
2021-03-12  2:50     ` Kees Cook
2021-03-12  0:49 ` [PATCH 16/17] KVM: arm64: Disable CFI for nVHE Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:50   ` Kees Cook
2021-03-12  2:50     ` Kees Cook
2021-03-12  0:49 ` [PATCH 17/17] arm64: allow CONFIG_CFI_CLANG to be selected Sami Tolvanen
2021-03-12  0:49   ` Sami Tolvanen
2021-03-12  2:51   ` Kees Cook
2021-03-12  2:51     ` Kees Cook
2021-03-16 20:44     ` Sami Tolvanen
2021-03-16 20:44       ` Sami Tolvanen
2021-03-16 23:02       ` Kees Cook
2021-03-16 23:02         ` Kees Cook

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210312004919.669614-15-samitolvanen@google.com \
    --to=samitolvanen@google.com \
    --cc=arnd@arndb.de \
    --cc=bpf@vger.kernel.org \
    --cc=jeyu@kernel.org \
    --cc=keescook@chromium.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=tj@kernel.org \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.