Message ID | 1550581355-7068-3-git-send-email-paolo.pisati@canonical.com |
---|---|
State | New |
Headers | show |
Series | CVE-2018-18021 - arm64 KVM DoS/privesc | expand |
On 2019-02-19 14:02:34, Paolo Pisati wrote: > From: Christoffer Dall <christoffer.dall@linaro.org> > > We have numerous checks around that checks if the HCR_EL2 has the RW bit > set to figure out if we're running an AArch64 or AArch32 VM. In some > cases, directly checking the RW bit (given its unintuitive name), is a > bit confusing, and that's not going to improve as we move logic around > for the following patches that optimize KVM on AArch64 hosts with VHE. > > Therefore, introduce a helper, vcpu_el1_is_32bit, and replace existing > direct checks of HCR_EL2.RW with the helper. > > Reviewed-by: Julien Grall <julien.grall@arm.com> > Reviewed-by: Julien Thierry <julien.thierry@arm.com> > Acked-by: Marc Zyngier <marc.zyngier@arm.com> > Reviewed-by: Andrew Jones <drjones@redhat.com> > Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org> > Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Needs the associated CVE id listed here in the commit message: CVE-2018-18021 This can be done by whoever applies the patch. > (partially cherry picked from commit e72341c5126a70072a10585c45923dd55050ca79) > Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com> Acked-by: Tyler Hicks <tyhicks@canonical.com> Tyler > --- > arch/arm64/include/asm/kvm_emulate.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h > index 413dc82..00da772 100644 > --- a/arch/arm64/include/asm/kvm_emulate.h > +++ b/arch/arm64/include/asm/kvm_emulate.h > @@ -45,6 +45,11 @@ void kvm_inject_undef32(struct kvm_vcpu *vcpu); > void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr); > void kvm_inject_pabt32(struct kvm_vcpu *vcpu, unsigned long addr); > > +static inline bool vcpu_el1_is_32bit(struct kvm_vcpu *vcpu) > +{ > + return !(vcpu->arch.hcr_el2 & HCR_RW); > +} > + > static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu) > { > vcpu->arch.hcr_el2 = HCR_GUEST_FLAGS; > -- > 2.7.4 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h index 413dc82..00da772 100644 --- a/arch/arm64/include/asm/kvm_emulate.h +++ b/arch/arm64/include/asm/kvm_emulate.h @@ -45,6 +45,11 @@ void kvm_inject_undef32(struct kvm_vcpu *vcpu); void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr); void kvm_inject_pabt32(struct kvm_vcpu *vcpu, unsigned long addr); +static inline bool vcpu_el1_is_32bit(struct kvm_vcpu *vcpu) +{ + return !(vcpu->arch.hcr_el2 & HCR_RW); +} + static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu) { vcpu->arch.hcr_el2 = HCR_GUEST_FLAGS;