[PATCH v3 05/21] arm64: kvm: deal with kernel symbols outside of linear mapping
From: mark.rutland@arm.com (Mark Rutland)
Date: 2016-01-12 12:37:22
Also in:
lkml
On Mon, Jan 11, 2016 at 02:18:58PM +0100, Ard Biesheuvel wrote:
KVM on arm64 uses a fixed offset between the linear mapping at EL1 and the HYP mapping at EL2. Before we can move the kernel virtual mapping out of the linear mapping, we have to make sure that references to kernel symbols that are accessed via the HYP mapping are translated to their linear equivalent. To prevent inadvertent direct references from sneaking in later, change the type of all extern declarations to HYP kernel symbols to the opaque 'struct kvm_ksym', which does not decay to a pointer type like char arrays and function references. This is not bullet proof, but at least forces the user to take the address explicitly rather than referencing it directly. Signed-off-by: Ard Biesheuvel <redacted>
Cool feature!
quoted hunk ↗ jump to hunk
diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h index 5e377101f919..e3865845d3e1 100644 --- a/arch/arm64/include/asm/kvm_asm.h +++ b/arch/arm64/include/asm/kvm_asm.h@@ -105,24 +105,29 @@ #ifndef __ASSEMBLY__ struct kvm; struct kvm_vcpu; +struct kvm_ksym;
So that one doesn't have to trawl git logs, it might be worth a comment as to the purpose of struct kvm_ksym (and thus why we never need to actually define it). Either way: Reviewed-by: Mark Rutland <mark.rutland@arm.com> Mark.