OSDN Git Service

arm64: KVM: Move BP hardening vectors into .hyp.text section
authorMarc Zyngier <marc.zyngier@arm.com>
Wed, 14 Mar 2018 13:28:50 +0000 (13:28 +0000)
committerMarc Zyngier <marc.zyngier@arm.com>
Mon, 19 Mar 2018 13:05:49 +0000 (13:05 +0000)
There is no reason why the BP hardening vectors shouldn't be part
of the HYP text at compile time, rather than being mapped at runtime.

Also introduce a new config symbol that controls the compilation
of bpi.S.

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm64/include/asm/kvm_mmu.h
arch/arm64/kernel/Makefile
arch/arm64/kernel/bpi.S
arch/arm64/kvm/Kconfig

index 8cd37ea..65dc225 100644 (file)
@@ -380,9 +380,7 @@ static inline void *kvm_get_hyp_vector(void)
 
 static inline int kvm_map_vectors(void)
 {
-       return create_hyp_mappings(kvm_ksym_ref(__bp_harden_hyp_vecs_start),
-                                  kvm_ksym_ref(__bp_harden_hyp_vecs_end),
-                                  PAGE_HYP_EXEC);
+       return 0;
 }
 
 #else
index b875413..93bce17 100644 (file)
@@ -54,9 +54,7 @@ arm64-reloc-test-y := reloc_test_core.o reloc_test_syms.o
 arm64-obj-$(CONFIG_CRASH_DUMP)         += crash_dump.o
 arm64-obj-$(CONFIG_ARM_SDE_INTERFACE)  += sdei.o
 
-ifeq ($(CONFIG_KVM),y)
-arm64-obj-$(CONFIG_HARDEN_BRANCH_PREDICTOR)    += bpi.o
-endif
+arm64-obj-$(CONFIG_KVM_INDIRECT_VECTORS)+= bpi.o
 
 obj-y                                  += $(arm64-obj-y) vdso/ probes/
 obj-m                                  += $(arm64-obj-m)
index e5de335..447188e 100644 (file)
        ventry \target + 0x780
 .endm
 
+
+       .text
+       .pushsection    .hyp.text, "ax"
+
        .align  11
 ENTRY(__bp_harden_hyp_vecs_start)
        .rept 4
@@ -55,6 +59,8 @@ ENTRY(__bp_harden_hyp_vecs_start)
        .endr
 ENTRY(__bp_harden_hyp_vecs_end)
 
+       .popsection
+
 ENTRY(__qcom_hyp_sanitize_link_stack_start)
        stp     x29, x30, [sp, #-16]!
        .rept   16
index 2257dfc..bd8cc03 100644 (file)
@@ -57,6 +57,9 @@ config KVM_ARM_PMU
          Adds support for a virtual Performance Monitoring Unit (PMU) in
          virtual machines.
 
+config KVM_INDIRECT_VECTORS
+       def_bool KVM && HARDEN_BRANCH_PREDICTOR
+
 source drivers/vhost/Kconfig
 
 endif # VIRTUALIZATION