From: Sean Christopherson <seanjc@google.com>
To: Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Alexander Potapenko <glider@google.com>
Subject: [PATCH 0/2] KVM: x86: Fix an FPU+CET splat
Date: Thu, 30 Oct 2025 11:58:00 -0700 [thread overview]
Message-ID: <20251030185802.3375059-1-seanjc@google.com> (raw)
Fix a explosion found via syzkaller+KASAN where KVM attempts to "put" an
FPU without first having loading the FPU. The underlying problem is the
ugly hack for dealing with INIT being processed during MP_STATE.
KVM needs to ensure the FPU state is resident in memory in order to clear
MPX and CET state. In most cases, INIT is emulated during KVM_RUN, and so
KVM needs to put the FPU. But for MP_STATE, the FPU doesn't need to be
loaded, and so isn't. Except when KVM predicts that the FPU will be
unloaded. CET enabling updated the "put" path but missed the prediction
logic in MP_STATE.
Rip out the ugly hack and instead do the obvious-in-hindsight thing of
checking if the FPU is loaded (or not). To retain a sanity check, e.g.
that the FPU is loaded as expected during KVM_RUN, WARN if the FPU being
loaded and the vCPU wanting to run aren't equal.
Sean Christopherson (2):
KVM: x86: Unload "FPU" state on INIT if and only if its currently
in-use
KVM: x86: Harden KVM against imbalanced load/put of guest FPU state
arch/x86/kvm/x86.c | 31 +++++++++++++++++++++----------
1 file changed, 21 insertions(+), 10 deletions(-)
base-commit: 4361f5aa8bfcecbab3fc8db987482b9e08115a6a
--
2.51.1.930.gacf6e81ea2-goog
next reply other threads:[~2025-10-30 18:58 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-30 18:58 Sean Christopherson [this message]
2025-10-30 18:58 ` [PATCH 1/2] KVM: x86: Unload "FPU" state on INIT if and only if its currently in-use Sean Christopherson
2025-11-04 3:10 ` Chao Gao
2025-10-30 18:58 ` [PATCH 2/2] KVM: x86: Harden KVM against imbalanced load/put of guest FPU state Sean Christopherson
2025-11-04 6:07 ` Chao Gao
2025-10-31 6:28 ` [PATCH 0/2] KVM: x86: Fix an FPU+CET splat Yao Yuan
2025-11-04 17:45 ` Sean Christopherson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251030185802.3375059-1-seanjc@google.com \
--to=seanjc@google.com \
--cc=glider@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®