]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: x86: Mark TSS busy during LTR emulation _after_ all fault checks
authorSean Christopherson <seanjc@google.com>
Mon, 11 Jul 2022 23:27:48 +0000 (23:27 +0000)
committerSean Christopherson <seanjc@google.com>
Thu, 14 Jul 2022 01:14:05 +0000 (18:14 -0700)
commit1d7d7172928ce015b14bb896d50b51c2ca67434b
tree4701c0bd35b304f5a73e8089baf3d770e2b215e3
parentd0c4d9b36cc6c825ab098ac3a3059cb4f7439c94
KVM: x86: Mark TSS busy during LTR emulation _after_ all fault checks

Wait to mark the TSS as busy during LTR emulation until after all fault
checks for the LTR have passed.  Specifically, don't mark the TSS busy if
the new TSS base is non-canonical.

Opportunistically drop the one-off !seg_desc.PRESENT check for TR as the
only reason for the early check was to avoid marking a !PRESENT TSS as
busy, i.e. the common !PRESENT is now done before setting the busy bit.

Fixes: 0545389c5924 ("KVM: x86: Emulator ignores LDTR/TR extended base on LLDT/LTR")
Reported-by: syzbot+760a73552f47a8cd0fd9@syzkaller.appspotmail.com
Cc: stable@vger.kernel.org
Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Cc: Hou Wenlong <houwenlong.hwl@antgroup.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Link: https://lore.kernel.org/r/20220711232750.1092012-2-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/emulate.c