KVM: x86: Fix bit shifting in update_intel_pt_cfg
authorGustavo A. R. Silva <gustavo@embeddedor.com>
Wed, 26 Dec 2018 20:40:59 +0000 (14:40 -0600)
committerRadim Krčmář <rkrcmar@redhat.com>
Fri, 11 Jan 2019 17:38:07 +0000 (18:38 +0100)
ctl_bitmask in pt_desc is of type u64. When an integer like 0xf is
being left shifted more than 32 bits, the behavior is undefined.

Fix this by adding suffix ULL to integer 0xf.

Addresses-Coverity-ID: 1476095 ("Bad bit shift operation")
Fixes: 6c0f0bba85a0 ("KVM: x86: Introduce a function to initialize the PT configuration")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Reviewed-by: Wei Yang <richardw.yang@linux.intel.com>
Reviewed-by: Luwei Kang <luwei.kang@intel.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
arch/x86/kvm/vmx/vmx.c

index 4d39f731bc33298831cf7b093de8acca9f7b964b..e344dc8626d09d24d794677c60ebbf0c9db3db91 100644 (file)
@@ -7044,7 +7044,7 @@ static void update_intel_pt_cfg(struct kvm_vcpu *vcpu)
 
        /* unmask address range configure area */
        for (i = 0; i < vmx->pt_desc.addr_range; i++)
-               vmx->pt_desc.ctl_bitmask &= ~(0xf << (32 + i * 4));
+               vmx->pt_desc.ctl_bitmask &= ~(0xfULL << (32 + i * 4));
 }
 
 static void vmx_cpuid_update(struct kvm_vcpu *vcpu)