From: David Hildenbrand Date: Fri, 7 Apr 2017 08:50:21 +0000 (+0200) Subject: KVM: x86: check against irqchip_mode in pic_in_kernel() X-Git-Tag: v4.12-rc1~68^2~50 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=19d25a0e474b0c69272e17cb6a9106c25eb27c82;p=karo-tx-linux.git KVM: x86: check against irqchip_mode in pic_in_kernel() Let's avoid checking against kvm->arch.vpic. We have kvm->arch.irqchip_mode for that now. KVM_IRQCHIP_KERNEL implies a fully inititalized pic, while kvm->arch.vpic might temporarily be set but invalidated again if e.g. kvm_ioapic_init() fails when setting KVM_CREATE_IRQCHIP. Although current users seem to be fine, this avoids future bugs. Signed-off-by: David Hildenbrand Signed-off-by: Radim Krčmář --- diff --git a/arch/x86/kvm/irq.h b/arch/x86/kvm/irq.h index 59e05febc8fb..26d8dd4a4323 100644 --- a/arch/x86/kvm/irq.h +++ b/arch/x86/kvm/irq.h @@ -85,10 +85,11 @@ static inline struct kvm_pic *pic_irqchip(struct kvm *kvm) static inline int pic_in_kernel(struct kvm *kvm) { - int ret; + int mode = kvm->arch.irqchip_mode; - ret = (pic_irqchip(kvm) != NULL); - return ret; + /* Matches smp_wmb() when setting irqchip_mode */ + smp_rmb(); + return mode == KVM_IRQCHIP_KERNEL; } static inline int irqchip_split(struct kvm *kvm)