On Mon, Jul 13, 2020 at 11:23 AM Jim Mattson <jmattson@xxxxxxxxxx> wrote: > > On Mon, Jul 13, 2020 at 9:22 AM Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> wrote: > > > > Before commit 850448f35aaf ("KVM: nVMX: Fix VMX preemption timer > > migration") struct kvm_vmx_nested_state_hdr looked like: > > > > struct kvm_vmx_nested_state_hdr { > > __u64 vmxon_pa; > > __u64 vmcs12_pa; > > struct { > > __u16 flags; > > } smm; > > } > > > > The ABI got broken by the above mentioned commit and an attempt > > to fix that was made in commit 83d31e5271ac ("KVM: nVMX: fixes for > > preemption timer migration") which made the structure look like: > > > > struct kvm_vmx_nested_state_hdr { > > __u64 vmxon_pa; > > __u64 vmcs12_pa; > > struct { > > __u16 flags; > > } smm; > > __u32 flags; > > __u64 preemption_timer_deadline; > > }; > > > > The problem with this layout is that before both changes compilers were > > allocating 24 bytes for this and although smm.flags is padded to 8 bytes, > > it is initialized as a 2 byte value. Chances are that legacy userspaces > > using old layout will be passing uninitialized bytes which will slip into > > what is now known as 'flags'. > > > > Suggested-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > > Fixes: 850448f35aaf ("KVM: nVMX: Fix VMX preemption timer migration") > > Fixes: 83d31e5271ac ("KVM: nVMX: fixes for preemption timer migration") > > Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > > Oops! > > Reviewed-by: Jim Mattson <jmattson@xxxxxxxxxx> Whatever happened to this?