Skip to content

Commit

Permalink
KVM: arm64: Make BP hardening globals static instead
Browse files Browse the repository at this point in the history
Branch predictor hardening of the hyp vectors is partially driven by a
couple of global variables ('__kvm_bp_vect_base' and
'__kvm_harden_el2_vector_slot'). However, these are only used within a
single compilation unit, so internalise them there instead.

Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: Marc Zyngier <maz@kernel.org>
Cc: Quentin Perret <qperret@google.com>
Link: https://lore.kernel.org/r/20201113113847.21619-5-will@kernel.org
  • Loading branch information
willdeacon authored and Marc Zyngier committed Nov 16, 2020
1 parent 042c76a commit 07cf8aa
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 6 deletions.
3 changes: 0 additions & 3 deletions arch/arm64/include/asm/kvm_mmu.h
Original file line number Diff line number Diff line change
Expand Up @@ -208,9 +208,6 @@ static inline int kvm_write_guest_lock(struct kvm *kvm, gpa_t gpa,
return ret;
}

extern void *__kvm_bp_vect_base;
extern int __kvm_harden_el2_vector_slot;

#define kvm_phys_to_vttbr(addr) phys_to_ttbr(addr)

static __always_inline u64 kvm_get_vttbr(struct kvm_s2_mmu *mmu)
Expand Down
8 changes: 8 additions & 0 deletions arch/arm64/kvm/arm.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,14 @@ DECLARE_KVM_HYP_PER_CPU(unsigned long, kvm_hyp_vector);
static DEFINE_PER_CPU(unsigned long, kvm_arm_hyp_stack_page);
unsigned long kvm_arm_hyp_percpu_base[NR_CPUS];

/* Hypervisor VA of the indirect vector trampoline page */
static void *__kvm_bp_vect_base;
/*
* Slot in the hyp vector page for use by the indirect vector trampoline
* when mitigation against Spectre-v2 is not required.
*/
static int __kvm_harden_el2_vector_slot;

/* The VMID used in the VTTBR */
static atomic64_t kvm_vmid_gen = ATOMIC64_INIT(1);
static u32 kvm_next_vmid;
Expand Down
3 changes: 0 additions & 3 deletions arch/arm64/kvm/va_layout.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,6 @@ void __init kvm_update_va_mask(struct alt_instr *alt,
}
}

void *__kvm_bp_vect_base;
int __kvm_harden_el2_vector_slot;

void kvm_patch_vector_branch(struct alt_instr *alt,
__le32 *origptr, __le32 *updptr, int nr_inst)
{
Expand Down

0 comments on commit 07cf8aa

Please sign in to comment.